之前我们说到“统一身份认证平台之SSO建设”对组织建设的价值和建设思路,知道了通过实施统一身份管理解决方案,能够简化用户管理、降本增效、并加强安全性。对于员工来说,给予一套单一的凭证(如账号密码),就可以使其访问多个权限内的应用系统,也就是说员工只需要输入一套用户名和密码,就可以访问OA、邮箱、HR、CRM等所有工作相关的应用系统。那么本次我们就以CAS单点登陆协议为例,让大家了解这个过程是如何实现的,它的原理又是什么。
统一认证服务(CAS)是一种开放、简单且完备的身份验证协议。该协议是客户端、服务器与浏览器的三方约定,是大家都必须遵守的规则。我们把用户访问业务的流程做个简单的比喻,如下图:
你去某单位食堂吃饭,食堂打饭的阿姨发现你是第一次来打饭,并且没有带饭票,这时候阿姨会告诉你,不收现金,并且让你去门口找换票的()换小票。于是你到门口完成身份认证和记录以后拿到饭票,再去找食堂阿姨,食堂阿姨拿着你的票去找换票的查询饭票的真伪,得到饭票是真的答复后,于是就给你打饭了。
当然了,现实访问业务的过程中,我们会分为几种情况,如:第一次访问业务、第二次访问业务、访问其他业务。
如果把这个流程转换成我们访问业务的流程,那么就会有如下对应关系:
第一步:用户访问abcd.com,过滤器判断用户是否登录。
第二步:过滤器检测到用户没有登录,则重定向到http://认证中心。
第三步:重定向到后,用户输入用户名密码通过认证中心的验证,随后将用户登录的信息记录到认证中心的session中。
第五步:浏览器将凭证交给www.abcd.com。
第六步:www.abcd.com的过滤器会取到凭证的值,然后通过http方式调用验证该凭证是否是有效的,从而判断用户是否登录成功。
第七步:验证凭证有效,www.abcd.com接收到认证中心的返回结果,知道了用户合法,展示相关资源到用户浏览器上,完成访问。
如果再次访问abcd.com会发生什么呢,我们这时候要了解一个名词,那就是Session。
什么是Session呢,在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
所以这时候如果用户第二次访问abcd.com,通过使用在session中记录的用户信息,因此直接就可以通过了,不用验证了。
那么如果用户这时候再访问xyz.com会发生什么呢,也就是你去另一个阿姨那边打饭会发生什么?
这时候另一个阿姨发现你是第一次来,依然会让你去找门口换票的,但是这时候,你已经在认证中心认证过了,也就是换票的那边已经存储有你的相关对应信息了,会直接通过之前颁布凭证的信息查询关联关系,找到根票据TGT,然后通过根票据TGT重新给你颁布一个针对xyz,com的“饭票”,也就是小令牌,这样你就能拿着重新颁发的小令牌访问xyz,com了,xyz,com依然会再次向认证中心认证验证令牌是否有效,再得到验证有效的结果后,就会让用户通过资源访问请求,返回内容了。至此,CAS登录的整个过程就完毕了。
CAS单点登录协议作为一种简单而高效的身份验证解决方案,为用户提供了更便捷、更安全的登录体验。通过引入中心化认证服务器和基于票据的认证机制,CAS协议实现了用户在多个应用系统间的单一登录,极大地简化了用户的登录流程,提高了系统的安全性和可靠性。在当前信息化建设的背景下,CAS协议必将发挥越来越重要的作用,成为各种类型应用的理想选择,为用户带来更加便捷和安全的在线体验。
当然了,除了CAS还有很多其他应用非常广泛的SSO协议,不同的协议的适用场景、优势都有不同,CAS相对于其他协议来说相对简单,易于理解和实现,并且它的工作流程清晰,由于协议本身的简洁性,可以更快地部署和集成到现有的应用程序中,特别适用于需要在多个应用程序之间实现单一登录的场景,这也是导致它大面积被使用的重要特点。
|