1. 环境说明
网络隔离是指用户访问的网络环境只能访问负载均衡/API网关,而访问不了后面的微服务机器
2. 架构图
3. 设计思路
3.1 授权服务器
- 负责登录认证
- token派发
- token刷新
- 应用接入管理
- …
3.2 API网关
添加认证中心的sdk负责所有请求的鉴权,包括登录验证和url级别的权限判断,主要的JWT原理如下:
- 拦截请求获取判断是否带有
token参数(parameter和header) - 通过公钥
pubkey.txt解密token - 判断
token中的权限信息是否能访问当前url - 把用户名和角色信息放到请求的
header中,传给后面的微服务
3.3 TokenResolver(TokenArgumentResolver类)
嵌入在微服务程序中负责获取当前登录人,主要原理如下:
- 判断当前url请求的方法有没有带有
@LoginUser注解 - 判断
@LoginUser注解的isFull属性是否为true则通过username查询用户对象 - 构建
SysUser对象传给目标方法
