原理图形:
Client原理分析:
1、访问客户端的时候,XxlSsoWebFilter过滤器过滤请求,XxlSsoWebFilter类继承了HttpServlet,实现了Filter接口
2、先从Cookie中获取当前CookieId
3、如果用户没有登陆的情况下,自动重定向到认证授权中心
4、在认证授权中心登陆成功之后,在认证授权域名下存放对应的cookie信息,返回原来地址 (回调地址)
5、认证授权系统回调到子系统中传递xxl_sso_sessionid
6、回调到子系统的时候,进XxlSsoWebFilter拦截 获取xxl_sso_sessionid 信息
7、子系统使用xxl_sso_sessionid从redis查询认证授权系统登陆的用户信息,将用户信息在子系统域名下存放对应的用户Cookie信息,保证认证授权系统和子系统双方Cookie信息同步
其它子系统如何实现免密码登录呢?
用户在第一个子系统登录之后,访问第二系统登录认证时,重定向到认证授权系统,因为认证授权系统域名下已经有cookie信息,直接带xxl_sso_sessionid参数回调到子系统,执行上面6、7两个步骤
单点登录注销登录呢?
子系统注销后,会重定向到认证授权系统,认证授权系统根据删除xxl_sso_sessionid删除redis里面的登录信息,回调子系统,子系统删除cookie信息;其它子系统登录认证的时,认证中心xxl_sso_sessionid在redis里面已经不存在,需要重新登录授权