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
注解的isFul
l属性是否为true
则通过username
查询用户对象 - 构建
SysUser
对象传给目标方法