实现原理
SSO单点登录主要原理
- 访问服务:SSO客户端发送请求访问应用系统提供的服务资源。
- 定向认证:SSO客户端会重定向用户请求到SSO服务器。
- 用户认证:用户身份认证。
- 发放票据:SSO服务器会产生一个随机的Service Ticket。
- 验证票据:SSO服务器验证票据Service Ticket的合法性,验证通过后,允许客户端访问服务。
- 传输用户信息:SSO服务器验证票据通过后,传输用户认证结果信息给客户端。
- 单点退出:用户退出单点登录。
五种SSO访问流程
- 登录点:首次进入应用系统登录的站点称为登录点。
- 单点:用户已经登录,而后再访问另一应用系统的站点称为单点。
- 登录点首次访问:是指首次访问应用系统,进入登录页面的过程。
- 登录点二次访问:是指“登录点”在首次登录后,再次进行正常访问的过程。
- 单点首次访问:是指已经在上述“登录点”登录后,再首次访问另一个应用系统进行访问的过程。
- 单点二次访问:是指“单点”在首次登录后,再次进行正常访问的过程。
- 登录点首次访问
用户首次访问登录点System1,session中没有用户上下文,于是将请求地址包装为Service参数,转向SSO服务器定向认证,SSO服务器返回登录页面,用户录入用户名、密码等凭证信息,提交给SSO服务器,SSO服务器进行认证,认证成功后,生成TGT,再根据TGT发放票据ST,返回响应给浏览器,浏览器带着票据ST的Service参数的请求,请求SSO服务器验证票据,验证票据成功后,返回给浏览器用户信息,设置Session用户上下文、Cookie中设置TGC。
图2-4 登录点首次访问 - 登录点二次访问
用户在上述“登录点首次访问”登录成功后,再次访问登录点的应用服务时,判断session中已经存在用户上下文,就不再拦截,直接转向到需要访问的目标服务资源。
图2-5 登录点二次访问 - 单点首次访问
同上述“登录点首次访问”的说明。
图2-6 单点首次访问 - 单点二次访问
与“登录点二次访问”相似。
- 单点退出
用户单点登录后,有一个全局的单点登出过滤器对访问的安全资源的Ticket、Sessionid记录到一个映射表,称其为票据会话映射表。在一个子系统(如system1)执行单点退出"/logout"时,先销毁system1的本地Session,再向SSO服务器发送单点退出请求,SSO服务器接到这个请求后,将用户认证票据TGT销毁,清除浏览器Cookie中的TGC,再读取票据会话映射表,将其对应的票据ST,Session全部销毁。这样用户再访问各应用系统时,是单点退出状态,就需要重新登录
图2-7 单点退出