[TOC] ## 一、环境说明 网络隔离是指用户访问的网络环境只能访问负载均衡/API网关,而访问不了后面的微服务机器 ## 二、架构图 ### 2.1 JWT ![](https://img.kancloud.cn/1d/62/1d6251254d392f75a44e856a0bd2a6be_1042x633.png) ### 2.2 Redis ![](https://img.kancloud.cn/5b/48/5b4853c6a49bba92844f4f7051f03697_1042x633.png) ## 三. 设计思路 * **统一认证**:负责登录认证、token派发、token刷新、应用接入管理等功能 * **API网关**:添加认证中心的sdk负责所有请求的鉴权,包括登录验证和url级别的权限判断,主要的JWT原理如下: 1. 拦截请求获取判断是否带有token参数(parameter和header) 2. 通过公钥pubkey.txt解密token 3. 判断token中的权限信息是否能访问当前url 4. 把用户名和角色信息放到请求的header中,传给后面的微服务 * **TokenResolver**:嵌入在微服务程序中负责获取当前登录人,主要原理如下: 1. 判断当前url请求的方法有没有带有`@LoginUser`注解 2. 判断`@LoginUser`注解的`isFull`属性是否为`true`则通过`username`查询用户对象 3. 构建`SysUser`对象传给目标方法