摘要: 1、前后端分离架构 1.1、前后端半分离 工作流程大致是,访问html页面,加载css、js等静态资源,加载到浏览器时,js会发送一些ajax请求由nginx转发到后端服务器,后端服务器给出相应的json数据,页面解析Json数据,通过Dom操作渲染页面。 在这样的架构下,存在一些明显的弊端: SE 阅读全文
posted @ 2020-02-06 13:34 caofanqi 阅读(2353) 评论(0) 推荐(0) 编辑
摘要: 1、当前项目存在的问题 在前面我们已经完成了一个基于Oauth2认证和授权的流程(如上图)。但是到现在还没有进入到微服务的环境下,如果资源服务器(订单服务),不仅仅是一个单一服务。而是几十个微服务,并且每个微服务都是一个集群,在这样一个流程中存在如下问题: 1.1、安全处理和业务逻辑耦合,增加了复杂 阅读全文
posted @ 2020-02-03 16:19 caofanqi 阅读(1470) 评论(0) 推荐(0) 编辑
摘要: 1、使用scope来实现权限控制 认证服务器,可以根据不同的应用发出不同scope的令牌,同样,资源服务器也可以通过scope来控制访问权限。 场景:对于订单服务器,GET请求要求令牌的scope必须有read,POST请求必须有write。 1.1、订单服务提供两个请求一个POST,一个GET / 阅读全文
posted @ 2020-02-02 11:55 caofanqi 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 1、将微服务改造为OAuth2资源服务器 以订单服务为例,将其修改为OAuth2资源服务器 1.1、pom中添加spring-cloud-starter-oauth2依赖 <dependencyManagement> <dependencies> <dependency> <groupId>org. 阅读全文
posted @ 2020-02-01 21:35 caofanqi 阅读(988) 评论(0) 推荐(0) 编辑
摘要: 1、OAuth2协议中的角色流程概要介绍 OAuth2协议主要使用来认证和授权的,我们先来看一下OAuth2协议中的角色 1.1、用户:真正的人,大家都有可能是某一个服务的用户。 1.2、客户端应用:Web或手机App,直接跟用户打交道的。通过客户端应用发http请求,访问服务。 1.3、认证服务器 阅读全文
posted @ 2020-02-01 15:54 caofanqi 阅读(1398) 评论(0) 推荐(0) 编辑
摘要: 1、微服务安全面临的挑战 在微服务的架构下,对比单体应用架构的API安全有哪些新的挑战呢? 1.1、更多的入口点,更高的安全风险 单体应用的场景下,入口点只有一个,所有的请求都会从这个入口点进来,在这个入口点去建立一组Filter或者Interceptor,就可以控制所有的风险。 微服务场景下,业务 阅读全文
posted @ 2020-01-31 17:54 caofanqi 阅读(1306) 评论(0) 推荐(0) 编辑
摘要: 1、登陆 在前面,我们把图上常见的安全机制都做了一个简单的实现,但是登陆并没有在图中体现,因为并不是每次调用API的时候都需要登陆;登陆只是一个偶尔发生的事情,并不像图中的机制,每一次API的调用都贯穿在其中。但登陆也是整个安全机制中,重要的一环。 2、之前认证中(HttpBasic)存在的缺陷 在 阅读全文
posted @ 2020-01-30 01:44 caofanqi 阅读(560) 评论(0) 推荐(0) 编辑
摘要: 1、授权 授权在整个安全机制中,是比较重要的一环,一般要考虑两个事情,一个是访问的请求需不需要身份认证,如果不需要直接放过,如果需要,但是没有认证,应该返回401,需要用户进行认证。另一个就是,认证了,看有没有该资源的访问权限,如果有,放行;如果没有返回403,无权限。 2、常见的访问控制 2.1、 阅读全文
posted @ 2020-01-29 17:13 caofanqi 阅读(725) 评论(0) 推荐(0) 编辑
摘要: 1、审计所在安全链路的位置,为什么 如图所示,审计应该做在认证之后,授权之前。因为只有在认证之后,我们在记录日志的时候,在知道请求是那个用户发过来的;做在授权之前,哪些请求被拒绝了,在响应的时候,也可以把它记录下来。如果放到授权之后 ,那么被拒绝的请求就不能记录了。 审计日志一定要持久化,方便我们对 阅读全文
posted @ 2020-01-29 01:48 caofanqi 阅读(1692) 评论(0) 推荐(0) 编辑
摘要: 1、为什么要使用https 以用户注册为例,通过数据校验,可以保证用户传给我们的密码是完整有效的。数据进来之后,通过我们的处理,存放到数据库中的密码是经过加密的,也是安全的。但是还有一点,就是用户的请求在到达我们应用之前的一个安全,怎么来保证?用户注册的请求,在到达服务器之前,就被别人给截获了。用户 阅读全文
posted @ 2020-01-28 21:05 caofanqi 阅读(612) 评论(0) 推荐(0) 编辑