1. JWT
1.1 定义
Json web token,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。定义了一种简洁的、自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。
1.2 组成
(1)Header 头部:包含了两部分,token 类型、采用的加密算法
(2)Payload 负载:存放信息的地方
(3)Signature 签名:使用编码后的 header 和 payload 以及我们提供的一个密钥,使用 header 中指定的签名算法进行签名。
1.3 为什么使用JWT
(1)传统 token 认证,用户每次请求资源服务,资源服务都要携带令牌访问认证服务校验令牌合法性,并根据令牌获取用户信息,性能低下。
(2)JWT 认证,可以利用公钥、私钥完成对令牌的加密。
1.4 JWT 使用
(1)授权中心和资源中心持有私钥和公钥
(2)私钥颁发令牌
(3)公钥验证令牌
2. 用户角色管理
2.1 RBAC 模型
RBAC(role base access control)是一种设计模式,是用来设计和管理权限相关数据的一种模型。
3. 登录功能实现
3.1 登录流程
前端提交用户名、密码
用户微服务得到用户名密码
用户微服务组织数据(client_id、client_secret、用户名、密码)
用户微服务使用 RestTemplate 发送 HTTP 请求给授权中心微服务
授权中心微服务校验通过颁发令牌
前端将令牌存储到sessionStorage中,下次访问资源服务器通过 Header 携带访问