五、微服务版单点登陆系统(SSO)
发布时间:2025-12-09 18:13:05
浏览次数:4
微服务版单点登陆系统(SSO)实践
文章目录
- 微服务版单点登陆系统(SSO)实践
- 一、单点登陆系统简介
- 1. 背景分析
- 2. 单点登陆系统概述
- 3. 单点登陆系统解决方案设计
- 二、单点登陆系统初步设计
-
- 三、系统基础服务工程设计及实现
- 1. 业务描述
- 2. 表结构设计
- 3. 工程数据初始化
- 4. 创建系统服务工程并初始化
- 5. Pojo对象逻辑实现
- 6. Dao对象逻辑实现
- 7. Service对象逻辑实现
- 8. Controller对象逻辑实现
- 9. 启动服务进行访问测试
- 四、统一认证工程设计及实现
- 1. 业务描述
- 2. 创建工程及初始化
- 3. 启动并访问项目
- 4. 定义用户信息处理对象
- 5. 定义Security配置类
- 6. Security 认证流程分析
- 7. 构建令牌生成及配置对象
- 8. 定义Oauth2认证授权配置
- 9. 启动postman进行访问测试
- 五、资源服务工程设计及实现
- 1. 业务描述
- 2. 业务设计架构
- 3. 项目创建及初始化
- 4. 创建资源Controller对象
- 5. 配置令牌解析器对象
- 6. 配置资源认证授权规则
- 7. 启动Postman进行访问测试
- 六、网关工程设计及实现
- 1. 业务描述
- 2. 项目创建及初始化
- 3. 启动postman进行访问测试
- 七、客户端UI工程设计及实现
- 1. 业务描述
- 2. 项目创建及初始化
- 3. 创建UI工程登陆页面
- 4. 创建资源展现页面
- 八、技术摘要应用实践说明
- 1. 背景分析
- 2. Spring Security 技术
- 3. Jwt 数据规范
- 4. Oauth2规范
- 九、总结(Summary)
一、单点登陆系统简介
1. 背景分析
传统的登录系统中,每个站点都实现了自己的专用登录模块。各站点的登录状态相互不认可,各站点需要逐一手工登录。例如:
基于网关进行资源访问测试
Header 部分是一个 JSON 对象,描述 JWT 的元数据,通常是下面的样子。
{"alg": "HS256","typ": "JWT"}
上面代码中,alg属性表示签名的算法(algorithm),默认是 HMAC SHA256(简写HS256);typ属性表示这个令牌(token)的类型(type),JWT 令牌统一写为JWT。最后,将这个 JSON 对象使用 Base64URL 算法(详见后文)转成字符串。
Payload部分
Payload 部分也是一个 JSON 对象,用来存放实际需要传递的数据。JWT规范中规定了7个官方字段,供选用(了解)。
- iss (issuer):签发人
- exp (expiration time):过期时间
- sub (subject):主题
- aud (audience):受众
- nbf (Not Before):生效时间
- iat (Issued At):签发时间
- jti (JWT ID):编号
除了官方字段,你还可以在这个部分定义私有字段,下面就是一个例子。
{"sub": "1234567890","name": "John Doe","admin": true}
注意,JWT 默认是不加密的,任何人都可以读到,所以不要把秘密信息放在这个部分。
这个 JSON 对象也要使用 Base64URL 算法转成字符串。
Signature部分
Signature 部分是对前两部分的签名,其目的是防止数据被篡改。
首先,需要指定一个密钥(secret)。这个密钥只有服务器才知道,不能泄露给用户。然后,使用 Header 里面指定的签名算法(默认是 HMAC SHA256),按照下面的公式产生签名。
HMACSHA256(base64UrlEncode(header) + "." +base64UrlEncode(payload),secret)
算出签名以后,把 Header、Payload、Signature 三个部分拼成一个字符串,每个部分之间用"点"(.)分隔,就可以返回给用户。
4. Oauth2规范
oauth2定义了一种认证授权协议,一种规范,此规范中定义了四种类型的角色:
资源有者(User)认证授权服务器(jt-auth)资源服务器(jt-resource)客户端应用(jt-ui) 同时,在这种协议中规定了认证授权时的几种模式:
密码模式 (基于用户名和密码进行认证)授权码模式(就是我们说的三方认证:QQ,微信,微博,。。。。)… 九、总结(Summary)
重难点分析
- 单点登陆系统的设计架构(微服务架构)
- 服务的设计及划分(资源服务器,认证服务器,网关服务器,客户端服务)
- 认证及资源访问的流程(资源访问时要先认证再访问)
- 认证和授权时的一些关键技术(Spring Security,Jwt,Oauth2)