1.
访问受保护资源:用户通过浏览器或客户端尝试访问应用系统中的受保护页面(如 /index.html)。
2.
拦截器触发:应用系统的后端或前端网关上的拦截器启动,检查用户当前是否已具有有效的本地登录态(如有效的 Session 或 Cookie)。
3.
发起重定向:如果未登录或会话已失效,应用系统向浏览器发出 302 Found 响应,要求重定向到零信任 SSO 认证中心的 /jwt/sso 接口,并在 targetUrl 参数中附带业务回调地址。
4.
获取 Token 请求:浏览器根据指引,发起向 SSO 认证中心的请求。
5.
(可选) 统一登录:如果用户在此之前没有在 SSO 建立过全局会话,SSO 将其重定向至统一登录页面。
6.
(可选) 提交凭据:用户完成账号密码、扫码等形式的身份验证。
7.
(可选) 建立全局会话:SSO 认证中心验证通过后,与用户建立起全局统一登录会话。在此期间访问其它接入 SSO 的应用不再需要重新验证密码。
8.
签发 JWT Token:SSO 认证中心根据对应应用的配置信息和当前用户的身份,生成并使用私钥签发带有效期的 JWT Token。
9.
携带 Token 回调:SSO 认证中心响应 302 Found,指挥浏览器跳转回最初传递的 targetUrl,并在 URL Query 中附带刚刚签发的 token(例如 ?token=eyJhbGci...)。
10.
带着 Token 访问应用:浏览器带着 token 重新访问应用系统。
11.
A. 本地验签(推荐):应用系统利用预先拿到的公开验签秘钥,对 Token 进行解密并验证合法性与有效性。运算在应用本地完成,性能高。
B. 远端验证:应用系统向 SSO 服务器发起 /jwt/check 接口请求,交由 SSO 远端验证 Token 合法性。
12.
提取身份信息:验签无误后获取该用户的唯一身份标识(如 userId, userNo 或 email 等)。
13.
比对本地库:应用系统使用提取到的 SSO 身份标识,与系统本身内的账户数据库进行关联和比对。
14.
生成系统级凭证:确认该用户具备访问权限后,应用系统在本地服务端建立会话凭据(如创建 Session 或发放 Cookie Token)。
15.
放行并响应:彻底完成登录状态转换,最终为用户呈现实质的业务页面内容或响应数据。