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