单点登录


单点登录(SSO)

参考文档:https://juejin.cn/post/7044328327762411534?searchId=20240918172034A3B355DF0CFBF66410FA

1 登录

  1. 用户访问系统 1 的受保护资源,系统 1 发现用户未登录,跳转至 sso 认证中心,并将自己的地址作为参数

  2. sso 认证中心发现用户未登录,将用户引导至登录页面(带系统 1 地址)

  3. 用户输入用户名密码提交登录申请

  4. sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话(这时该会话信息保存到cookie中),同时创建授权令牌 设置 PToken

  5. sso 认证中心带着令牌(sTokenBackendValidate)跳转到最初的请求地址(系统 1) 302 跳转

  6. 系统 1 拿到令牌,掉取后端服务,后端服务, 去 sso 认证中心校验令牌是否有效(置换 SToken)

  7. sso 认证中心校验令牌,返回有效,注册系统 1,并给当前域名下写入 stoken

  8. 系统1使用该令牌创建与用户的会话,称为局部会话(seesion),返回受保护资源

  9. 重新获取用户信息携带 token,返回用户信息

  10. 用户访问系统 2 的受保护资源

  11. 系统 2 发现用户未登录,跳转至 sso 认证中心,并将自己的地址和之前和sso认证中心的会话cookie信息作为参数

  12. sso 认证中心发现用户已登录,跳转回系统 2 的地址,并附上令牌

  13. 系统 2 拿到令牌,去 sso 认证中心校验令牌是否有效,并给当前系统二域名下写入 stoken

  14. 系统 2 使用该令牌创建与用户的局部会话,返回受保护资源

用户登录成功之后,会与 sso 认证中心及访问的子系统建立会话,用户与 sso 认证中心建立的会话称为全局会话,用户与各个子系统建立的会话称为局部会话,局部会话建立之后,用户访问子系统受保护资源将不再通过 sso 认证中心,全局会话与局部会话有如下约束关系

2. 注销

  1. 用户向系统 1 发起注销请求

  2. 系统 1 根据用户与系统 1 建立的会话 id 拿到令牌,向 sso 认证中心发起注销请求

  3. sso 认证中心校验令牌有效,销毁全局会话,同时取出所有用此令牌注册的系统地址

  4. sso 认证中心向所有注册系统发起注销请求

  5. 各注册系统接收 sso 认证中心的注销请求,销毁局部会话

  6. sso 认证中心引导用户至登录页面


文章作者: 高红翔
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 高红翔 !
  目录