网站首页 > java教程 正文
前言
之前我们说到“”对组织建设的价值和建设思路,知道了通过实施统一身份管理解决方案,能够简化用户管理、降本增效、并加强安全性。对于员工来说,给予一套单一的凭证(如账号密码),就可以使其访问多个权限内的应用系统,也就是说员工只需要输入一套用户名和密码,就可以访问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
- 上一篇: SpringBoot集成xxl-sso实现单点登录
- 下一篇: SSO单点登录(三种实现方式)
猜你喜欢
- 2024-11-20 后端开发之多应用之间单点登录
- 2024-11-20 单点登陆常用的方式Oauth认证登录
- 2024-11-20 Python Web:如何通过JWT实现单点登录?
- 2024-11-20 4000字长文,带你了解单点登录
- 2024-11-20 SSO单点登录(三种实现方式)
- 2024-11-20 SpringBoot集成xxl-sso实现单点登录
- 2024-11-20 连环画解析“单点登录”原理,保证你能看懂
- 2024-11-20 CAS 单点登录简介
- 2024-11-20 springboot 集成cas5.3 实现sso单点登录
- 2024-11-20 ASP.NET中的单点登录
你 发表评论:
欢迎- 最近发表
-
- Java内存溢出紧急处理:10个必知的Linux命令快速定位OOM
- 面试常问的 25+ 个 Linux 命令(linux面试命令大全)
- Java堆外内存溢出紧急处理实战:Linux命令定位与Spring Boot解决
- java开发常用的Linux命令,高频的没你想象的多
- Java 应用 CPU 飙升?8 个 Linux 命令组合拳快速锁定异常线程
- Java 开发者线上问题排查常用的 15 个 Linux 命令
- Java程序员必备的Linux命令:让你的工作效率翻倍
- Java程序员必备的Linux命令全解析
- [超全整理] Java 程序员必备的 100 条 Linux 命令大全
- SAP ABAP资源导航(sap aatp)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)