1、什么是API? 百度百科给出的定义如下: API(Application Programming Interface,应用程序接口)是一些预先定义的函数,或指软件系统不同组成部分衔接的约
1、什么是 使用了用户输入的但是我们没有校验过的数据,来拼装一个可以行的指令,交给系统去执行,
1、什么是流控 所谓流控,就是流量控制,也称作限流。只放系统能够处理的请求数量过去。 2、为什么要做流控 保证
1、密码为什么要加密 存在数据库中的密码如果是明文,一旦数据库数据泄漏了,别人就可以拿着你的账号密码为所欲为。更何况有很多人在各个平台
1、什么是认证 认证是指我们去验证用户身份是否合法的过程。 2、认证和登陆的区别 很多人会把认证和登陆混为一谈,其实两者完全是两个概念。认证不是登陆,登陆是指用户获取身份证明的一个过程,认证是指我们去验证这个用户身份是否合法的过程。 登陆的行为,往往只发生一次,登陆成功后,会保存一段时间用户信息。而
1、微服务安全面临的挑战 在微服务的架构下,对比单体应用架构的API安全有哪些新的挑战呢? 1.1、更多的入口点,更高的安全风
1、OAuth2协议中的角色流程概要介绍 OAuth2协议主要使用来认证和授权的,我们先来看一下OAuth2协议中的角色 1.1、用户:真正的人,大家都有可能是某一个服务的用户。 1.2、客户端应用:Web或手机App,直接跟用户打交道的。通过客户端应用发请求,访问服务。 1.3、认证服务器
1、前后端分离架构 1.1、前后端半分离 工作流程大致是,访问html页面,加载css、js等静态资源,加载到浏览器时,js会发送一些ajax请求由nginx转发到后端服务器,后端服务器给出相应的json数据,页面解析Json数据,通过Dom操作渲染页面。 在这样的架构下,存在一些明显的弊端: SE
1、OAuth2四种模式 1.1、密码模式 这也是我们之前一直使用的模式,流程如下;这种模式下,用户敏感信息直接泄漏给了客户端应用,因此这种模式只能用于客户端应用是我们自己开发的。因此密码模式一般用于自己开发的App或单页面应用。 1.2、授权码模式 授权码模式是四种模式中最繁琐也是最安全的一种模式
1、access_token的有效期 我们知道 token的有效期,是控制登陆一次能访问多长时间微服务。那么access_token一般设置多长时间比较好呢?因为有access_token可以直接访问微服务,而不需要再次认证,所以access_token不建议设置很长的有效期,一般为一到两个小时,因
1、Sentinel是什么 Sentinel是阿里巴巴在2018年开源的面向分布式服务架构的轻量级流量控制组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助您保障微服务的稳定性。 Sentinel里面涉及两个基本概念:资源和规则。a、资源是 Sentinel 的关键概
规则持久化 现在我们配置的规则实际上是在内存中的,如果客户端应用配置中有控制台(dashboard),当流量经过客户端的时候,会把规则同步给控制台;同样当在控制台配置规则后,也会把规则推送给相应的客户端。规则都是存放在两边的内存中,一旦控制台或客户端重启,内存中的规则就消失了。如下图: 我们需要一个
1、安装Grafana 1.1、docker安装 1.2、docker-compose.yml version: "3" services: prometheus: image: prom/prometheus:v2.4.3 container_name: 'prometheus' volumes:
1、授权 授权在整个安全机制中,是比较重要的一环,一般要考虑两个事情,一个是访问的请求需不需要身份认证,如果不需要直接放过,如果需要,但是没有认证,应该返回401,需要用户进行认证。另一个就是,认证了,看有没有该资源的访问权限,如果有,放行;如果没有返回403,无权限。 2、常见的访问控制 2.1、
1、当前项目存在的问题 在前面我们已经完成了一个基于Oauth2认证和授权的流程(如上图)。但是到现在还没有进入到微服务的环境下,如果资源服务器(订单服务),不仅仅是一个单一服务。而是几十个微服务,并且每个微服务都是一个集群,在这样一个流程中存在如下问题: 1.1、安全处理和业务逻辑耦合,增加了复杂
1、将微服务改造为OAuth2资源服务器 以订单服务为例,将其修改为OAuth2资源服务器 1.1、pom中添加spring-cloud-starter-oauth2依赖 <dependencyManagement> <dependencies> <dependency> <groupId>org.
1、登陆 在前面,我们把图上常见的安全机制都做了一个简单的实现,但是登陆并没有在图中体现,因为并不是每次调用API的时候都需要登陆;登陆只是一个偶尔发生的事情,并不像图中的机制,每一次API的调用都贯穿在其中。但登陆也是整个安全机制中,重要的一环。 2、之前认证中(HttpBasic)存在的缺陷 在
1、使用scope来实现权限控制 认证服务器,可以根据不同的应用发出不同scope的令牌,同样,资源服务器也可以通过scope来控制访问权限。 场景:对
1、两个session,三个有效期 在上一节,实现的其实是基于session的sso,在该方案中有两个session,一个是客户端应用的session,一个是认证服务器的sessioin。一共有三个有效期,两个session的有效期,还有一个token令牌的有效期。他们的作用是如下: 1.1、客户端
1、使用JWT来解决认证中存在的问题 之前说认证中存在的问题是效率低,每次都要取认证服务器进行校验;不安全,传递用户信息是放到请求头中的明文。这两个问题的解决方案就是JWT。JWT官网扫盲连接https://jwt.io/introduction/。 因为我们之前发出去的令牌都是一些无意义的串,而J
目前为止,我们已经实现了一个基于微服务,前后端分离的架构(前端服务使用SpringBoot模拟),如上图;并且在网关上做了限流、认证、审计、授权等安全机制;在前端做了SSO单点登陆。 但是目前的架构还是有一些问题的: 1、限流: 在前面网管安全我们也说过网关上不要做细粒度的限流,主要为服务器硬件设备
1、修改项目使其基于浏览器cookie的SSO 1.1、修改回调方法,获得到token后,由存放到session改为存放到cookie /** * 回调方法 * 接收认证服务器发来的授权码,并换取令牌 * * @param code 授权码 * @param state 请求授权服务器时发送的sta
1、Sentinel注解支持 在学习熔断降级之前,我们先来看一下Sentinel的注解支持,我们使用spring-cloud-starter-alibaba-sentinel依赖,无需额外配置即可使用@SentinelResource注解定义资源。 @SentinelResource 用于定义资源,
上节我们使用JWT优化了认证机制,通过令牌可以解析出当前用户是谁,并且这个令牌可以在网关到微服务,微服务和微服务之间传递,现在我们来看一下权限的控制 1、简单的ACL控制 最简单的情况就是ACL(访问控制列表),能干什么都在scope里面,但是scope是针对客户端应用的,无法控制各个用户可以做什么
1、热点参数限流 1.1、何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如: a、商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制 b、用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制 热点
前面我们已经完成了通过JWT的认证和授权的改造,可以看到我们的代码中没有认证和授权的过滤器(Filter)了,基本上由SpringSecurity的过滤器来接管了,接下来我们来看一下怎么在SpringSecurity的过滤器链上加上我们自己的逻辑,比如日志和限流。 1、在SpringSecurity
1、Prometheus简介 Prometheus是具有活跃生态系统的开源系统监视和警报工具包。下图是Prometheus的体系结构及其某些生态系统组件。最核心的位置就是Prometheus server,主要的作用就是根据我们的配置去用于收集和存储时间序列数据。Service discovery服
1、Metrics类型 prometheus中定义了四种metrics类型: 1.1、Counter:只增不减的计数器,其值只能在重新启动时递增或重置为零。例如,可以使用计数器表示已服务的请求数、已完成的任务数或错误数。 1.2、Gauge:是一种度量,它表示一个可以任意上下移动的数值。例如,温度或
占位
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号