跳转过程说明

Cas版单点登录系统

单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

Cas(Central Authentication Service)单点登录系统是由耶鲁大学开发的一个开源的单点登录产品,项目托管在GitHub-Jasig/cas,人员活跃,迭代周期短,设计理念先进、体系结构合理、配置简单、客户端支持广泛、技术成熟。

本文档主要说明单点登录的流程。国双单点登录系统基于Cas单点登录开发,登录原理相同,建议在对接前先阅读此文档。

单点登录流程

第一次访问目标产品A

假设目标产品A为 https://xd.gridsumdissector.com/ 。当浏览器进入网址后,https://xd.gridsumdissector.com/ 检测到当前没有可以标识已经登录的信息,所以需要进行登录验证,此时浏览器将会重定向到 https://sso-cas.gridsumdissector.com/login?service=https://%3A%2F%2Fxd.gridsumdissector.com%2F 登录页面进行登录。

当登录成功后(这里登录失败的情况不做考虑),SSO会生成一个凭据ticket-granting ticket,简称tgt来作为这个用户当前的标识,并且会将tgt的id作为cookie存到浏览器中(关于tgt凭据的有效时间,请参考认证过期策略说明文档)。

在生成tgt时,SSO同时会生成一个service ticket(它是一个生命周期短、有效次数为一次的验证凭据),简称st,作为参数跳转到登录前的页面 https://xd.gridsumdissector.com/?ticket=st-123456 。

在目标产品A拿到st后,立即到SSO服务器验证st的合法性。若验证通过,则会进入产品页面,并会在cookie中设置本次会话的JSESSIONID作为标识,它会在此次会话结束时被清除。此时登录完成。

第二次访问目标产品A

在第一次访问成功后,浏览器中有JSESSIONID这个cookie作为标识,此时会认为已经登陆,直接进入产品页面。

第一次访问目标产品B

本条说明的前提条件是已经成功进入产品A。

当用户访问产品B时,浏览器没有可以标识已经登录的信息,同第一次访问A一样进行跳转。但当跳转到SSO服务器时,检测到含有tgt id的cookie。Cas在检测到tgt id合法后,会生成st返回到产品B。其后的流程与第一次访问产品A相同。

单点登录图解

以下为Cas官方给出的跳转流程图解。

Retionale