Spring Cloud微服务安全实战_6-5_jwt改造之日志以及错误处理(403/401)
摘要:到现在为止基于Jwt的认证和授权的改造已经完成了。在网关上,刚开始都是自己定义一系列的Filter实现认证和授权。现在已经没有了这些过滤器,完全由SpringSecurity的过滤器接管了。 一、审计日志过滤器 现在来实现在SpringSecurity过滤器链上加入自己的逻辑,现在的过滤器链上只处理
阅读全文
Spring Cloud微服务安全实战_6-4_权限控制改造
摘要:上一篇说了认证,通过令牌可以知道当前用户是谁,并把令牌信息从网关到微服务,以及微服务与微服务之间传递用户上下文的信息,这一篇来聊一下授权。 一、最简单的情况ACL权限控制 用户有哪些权限直接在scope里写着,只要在程序里判断一下要访问某个方法,是否有访问权限就可以了这种适用于权限简单的场景。 使用
阅读全文
Spring Cloud微服务安全实战_6-3_jwt认证之网关和服务改造
摘要:上一节在认证服务器里,将token 由uuid改造成了JWT,之前在网关上拿到令牌access_token后,需要去认证服务器校验令牌,将令牌信息转换为用户信息。 现在有了jwt后,由于jwt是自包含的,已经包含了用户的身份信息,所以在网关上不需要去认证服务器验令牌了。 之前在网关上所做的这些去认证
阅读全文
Spring Cloud微服务安全实战_6-2_jwt认证之认证服务改造
摘要:一 、认证服务器上发Token的改造:uuid字符串改造为JWT 之前生成的token都是一个无意义的字符串uuid,也存在着上一篇 https://www.cnblogs.com/lihaoyang/p/12203586.html 所说的几个问题。本篇就要把token改造成JWT。 在认证服务器配
阅读全文
Spring Cloud微服务安全实战_5-8_基于Cookie的SSO
摘要:前几篇说的都是基于session的SSO(客户端应用的session、认证服务器的session),客户端应用拿到认证服务器返回的token后,将其存在自己的session, 用户登录状态是存在服务器端的。 本篇要说的是,要实现一个基于浏览器cookie的SSO,客户端应用获取到令牌后,不是将其存到
阅读全文
Spring Cloud微服务安全实战_6-1_微服务之间的通讯安全之概述
摘要:到目前为止已经实现了一个基于微服务的,前后端分离(这里我用的jquery做的,并不是真的前后端分离,因为我不会vue和angular所以没用)的架构。在网关上做了限流、认证、审计、授权等安全机制,在前端应用上也做了SSO单点登录, 现在的架构存在的问题是: 1,在网关做限流。 在网关上做限流是有问题
阅读全文
Spring Cloud微服务安全实战_5-7_基于session的SSO优缺点以及适用场景
摘要:到目前为止已经实现了一个基于session的SSO 优点: 1,安全 。所有的token的信息都是放在session里(客户端应用session、认证服务器session),在浏览器里只有一个jsessionId,在浏览器这边只要做好session固定攻击的防护,一般是不会有什么风险的。 2,可控性
阅读全文
Spring Cloud微服务安全实战_5-6_refresh token失效处理
摘要:access_token是客户端调用其他微服务调的凭证,access_token有效期不能太长(丢了风险很大),一般可以设置2小时,如果access_token失效了,就不能调用微服务了,上节说了access_token失效的处理 refresh_token来刷新令牌,refresh_token可以
阅读全文
Spring Cloud微服务安全实战_5-4_认证服务器使用spring session
摘要:这一节介绍,在认证服务器上使用spring session。 由于认证服务器肯定要是一个高可用状态,所以一定是一个集群,这就需要做session共享,最简单的实现就是使用spring session。 Spring Session官方文档 :https://docs.spring.io/spring
阅读全文
Spring Cloud微服务安全实战_5-3_基于session的SSO
摘要:上一篇将OAuth2授权模式的password模式改造成了授权码模式,并初步实现了一个前后端分离架构下基于session的微服务的SSO。用户在客户端点击登录,会跳转到认证服务器的登录页面进行登录,登录成功后,认证服务器回调到客户端应用的callback方法,并携带了授权码,客户端拿着授权码去认证服
阅读全文
Spring Cloud微服务安全实战_5-2_实现授权码认证流程&实现SSO初步
摘要:目前的架构 到目前为止,已经实现了在前后端分离的架构,微服务的环境下,一个完整的业务逻辑,包括用户的登录,获取令牌,拿着令牌调服务,退出。(流程如下) 目前的架构是基于oauth2的password模式的,是存在一些问题的: 1,用户输入用户名密码,是提交给了前端服务器的,前端服务器的开发人员,都会
阅读全文
Spring Cloud微服务安全实战_5-1_单点登录基本架构
摘要:下面是常见的前后端分离的架构,准确的说,这是一种半分离的架构,这种架构存在一些问题: 1,SEO,搜索引擎只能识别静态的HTML资源,爬HTML的DOM树,它是没法识别js动态渲染出来的内容的,所以如果是这种架构,SEO会有问题 2,页面渲染是在浏览器完成的,如果业务复杂,要数据量大,可能会对浏览器
阅读全文
Spring Cloud微服务安全实战_4-10_用spring-cloud-zuul-ratelimit做限流
摘要:本篇讲网关上的限流 用开源项目spring-cloud-zuul-ratelimit 做网关上的限流 (项目github:https://github.com/marcosbarbero/ ) 1,在网关项目里,引入限流组件的maven依赖: 2,在网关项目yml配置里,配限流相关配置 github
阅读全文
Spring Cloud微服务安全实战_4-9_用zuul网关解耦安全逻辑和业务逻辑
摘要:上一篇通过网关, 解决了 问题1:微服务场景下,客户端访问服务的复杂性未解决 问题2:安全逻辑和业务逻辑的耦合;问题3:微服务过多对认证服务器的压力增大 本篇将微服务里的安全相关的逻辑挪到网关上来,这样就能解决这两个问题。 在之前的订单服务里(资源服务器),主要做了两件事: 1,认证,拿token去
阅读全文
Spring Cloud微服务安全实战_4-7_token&client信息持久化到数据库
摘要:本篇讲数据的持久化: 1,客户端应用 持久化到数据库 之前的章节里,客户端信息是在配置在代码里的,是存在内存里的,这样新增或删除一个客户端应用,都要改代码,然后还要重启认证服务器。 2,token 持久化到数据库 之前的章节里,token信息都是存在内存里的,这样的话重启服务器后,token就没了。
阅读全文
Spring Cloud微服务安全实战_4-6_OAuth2的Scope参数_token转换为用户信息
摘要:一、通过OAuth2 Toke的Scope参数控制权限 1,在服务端认证服务器里,通过配置客户端的Scope,可以控制给这个客户端生成的token有哪些权限 2,在客户端,申请令牌的时候,可以指定scope 示例:在资源服务器 (nb-order-api)里,控制post请求的token ,其sco
阅读全文
Spring Cloud微服务安全实战_4-5_搭建OAuth2资源服务器
摘要:上一篇搭建了一个OAuth2认证服务器,可以生成token,这篇来改造下之前的订单微服务,使其能够认这个token令牌。 本篇针对订单服务要做三件事: 1,要让他知道自己是资源服务器,他知道这件事后,才会在前边加一个过滤器去验令牌(配置@EnableResourceServer 配置类) 2,要让他
阅读全文
Spring Cloud微服务安全实战_4-4_OAuth2协议与微服务安全
摘要:接上篇文章,在这个流程中,PostMan可以代表客户端应用,订单服务是资源服务器,唯一缺少的是 认证服务器 ,下面来搭建认证服务器 项目结构: Pom.xml : DependencyManager 引入SpringCloud的配置,Dependency引入 spring-cloud-starter
阅读全文
Spring Cloud微服务安全实战_4-3_订单微服务&价格微服务
摘要:实现一个场景: 订单微服务: POM: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSch
阅读全文
Spring Cloud微服务安全实战_4-2_常见的微服务安全整体架构
摘要:这个图适用于中小公司的微服务架构 微服务:SpringBoot 写的Rest服务 服务注册与发现:微服务所必备的。每个微服务都会到上边去注册。不管是微服务之间的调用,还是服务网关到微服务的转发,都是通过服务注册和发现拿到服务的信息,来进行服务的调用或转发。 配置中心:统一管理配置的地方。 服务网关:
阅读全文