Spring Cloud下的微服务权限分别为三块:用户认证、用户权限、服务校验,下面主要分析用户认证的思路和源码。
传统的单体应用可能习惯了session的存在,而到了Spring cloud的微服务化后,session虽然可以采取分布式会话来解决,但终究不是上上策。开始有人推行Spring Cloud Security结合很好的OAuth2,后面为了优化OAuth 2中Access Token的存储问题,提高后端服务的可用性和扩展性,有了更好Token验证方式JWT(JSON Web Token)。这里要强调一点的是,OAuth2和JWT这两个根本没有可比性,是两个完全不同的东西。 OAuth2是一种授权框架,而JWT是一种认证协议。
JWT,全称是Json Web Token, 是JSON风格轻量级的授权和身份认证规范,
可实现无状态、分布式的Web应用授权;官网:https://jwt.io
JWT包含三部分数据:
–Header:头部,通常头部有两部分信息:
- 声明类型,这里是JWT
- 加密算法,自定义
我们会对头部进行base64加密(可解密),得到第一部分数据
–Payload:载荷,就是有效数据,一般包含下面信息:
- 用户身份信息(注意,这里因为采用base64加密,可解密,