五、微服务版单点登陆系统(SSO)

发布时间:2025-12-09 18:13:05 浏览次数:4

微服务版单点登陆系统(SSO)实践


文章目录

  • 微服务版单点登陆系统(SSO)实践
    • 一、单点登陆系统简介
      • 1. 背景分析
      • 2. 单点登陆系统概述
      • 3. 单点登陆系统解决方案设计
    • 二、单点登陆系统初步设计
      • 1. 服务设计
      • 2. 工程结构设计
    • 三、系统基础服务工程设计及实现
      • 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)

    需要做网站?需要网络推广?欢迎咨询客户经理 13272073477