CAS分析——Core

简介: 根据官方介绍,CAS具有一些接口,这些接口是CAS的核心,那么我们来看看有那些关键性的类:在CAS中很多地方使用了策略模式,那么根据什么方式来确定使用哪种策略呢?在很多策略类中有一个support(Credentials c)的方法,所以可以看出是根据Credentails的类型来决定使用哪种策略的。

根据官方介绍,CAS具有一些接口,这些接口是CAS的核心,那么我们来看看有那些关键性的类:

在CAS中很多地方使用了策略模式,那么根据什么方式来确定使用哪种策略呢?在很多策略类中有一个support(Credentials c)的方法,所以可以看出是根据Credentails的类型来决定使用哪种策略的。所以我们在AuthenticationHandler,CredentialsToPrincipalResolver,CredentialsBinder这些都可以看到support(Credentials c)方法。

 

org.jasig.cas.CentralAuthenticationService

CAS核心,提供给HTTP,Web HTML, Web Services, RMI或者其他请求使用。能够创建,存储,验证和验证票据信息。

具有几个方法:

1)String createTicketGrantingTicket(Credentials credentials) throws TicketException

  根据凭证对象来创建一个TGT票据,那么凭证怎么来的呢?就是页面输入的信息,现在知道为啥TGT是和用户相关的凭证了吧。

2) String grantServiceTicket(String ticketGrantingTicketId, Service service) throws TicketException

  根据 TGT 和 service 来创建 ST,从前面我们知道 service 就是接入的应用系统,那么ST 就是用户(TGT)访问的 service 的票据。

3) String grantServiceTicket(final String ticketGrantingTicketId,final Service service, final Credentials credentials) throws TicketException

  这个是干嘛的呢?有待研究。。。。。。

4)Assertion validateServiceTicket(final String serviceTicketId, final Service service) throws TicketException

  很容易理解验证ST的,那么怎么返回一个Assertion对象,哦,对了,在前面介绍客户端配置票据验证的时候,是不是验证通过后会有一个xml格式的数据?明白了吧,就是个那个地方使用的。

5) void destroyTicketGrantingTicket(final String ticketGrantingTicketId)

  没啥好说了,票据不会一直创建下去,用户也不是一直在线,总需要退出,就算不退出也有一个时间限制吧,这个就是给登出或者超时后销毁和用户相关的TGT票据使用滴。

6) String delegateTicketGrantingTicket(final String serviceTicketId,  final Credentials credentials) throws TicketException

  文档说是给代理使用的,不是很明白,有待研究。。。。。。

 

org.jasig.cas.authentication.handler.support.AbstractUsernamePasswordAuthenticationHandler

org.jasig.cas.authentication.handler.AuthenticationHandler

这个很好理解,就是实际验证的,只有两个方法:

boolean authenticate(Credentials credentials)

boolean supports(Credentials credentials)

后面这个是不是很熟悉啊,对了,就是前面提到的策略模式中的supports方法,怎么认证方法只会返回 true 和 false 啊,那么用户信息怎么取得呢?别急嘛,后面有个CredentialsToPrincipalResolver 接口专门来做这个事情滴。

 

org.jasig.cas.authentication.handler.PasswordEncoder

密码转换器

 

 

org.jasig.cas.authentication.principal.Credentials

取得客户输入的数据,或者可以理解为用户认证的凭据。就是需要认证用户身份需要的数据,每种认证方式需要信息是不一样的。这个只是一个类型接口,就是没有任何方法的接口啦

 

org.jasig.cas.authentication.principal.CredentialsToPrincipalResolver

上面我们说到,Credentials对象是从界面或者别的什么地方取得用户信息,那么用户信息通过认证后怎么转换为Principal对象呢,这个就是这个解析器的作用了,由于认证本身是没有返回用户信息的,只是确定人中通过还是没有通过,所以取得用户信息需要另外一个非常重要的接口PersonAttributeDao,这个接口其实并不在CAS核心接口中的,是在一个叫person-directory-api-1.5.0-RC6.jar中的,这个包里面只有两个类,两个接口,那么实现有那些呢?是在person-directory-impl-1.5.0-RC6.jar,这个里面内容很丰富的。基本上你能想到的所有能取得用户信息的地方都有实现了。这个接口,也是一个策略,只有两个方法:supports , Principal resolvePrincipal(Credentials credentials),后面这个接口是不是很一目了然了?你可以理解我解析,或者更贴切点叫转换

 

org.jasig.cas.authentication.principal.Principal

这个主要是保存认证后的用户信息。扩展信息放在一个Map中的

 

org.jasig.cas.authentication.principal.Service

这个接口定义了和客户端相关的方法,例如登出服务器logOutOfService等动作。logOutOfService就是单点登出时候,怎么在服务器端登出所有访问过的客户端啦。

 

org.jasig.cas.authentication.principal.UsernamePasswordCredentials

用户用户名和密码访问的Credentials实现。

 

org.jasig.cas.authentication.Authentication

认证对象,就是一次认证后的结果对象,那么为啥不使用Principal对象来作为认证结果呢?第一不是每次认证都是合法用户,对于不合法用户怎么办呢?其次,认证是一个动作,和这个动作本身相关的信息显然和用户信息是没有关系,例如认证时间。这个接口将Principal对象做了一次包装。也就是说可以通过Authentication接口可以访问到Principal对象。

 

org.jasig.cas.validation.Assertion

这个接口主要是定义了,验证服务返回的对象,就是一个断言,你这个ST有没有权限访问,以及TGT访问的ST认证对象

 

org.jasig.cas.web.bind.CredentialsBinder

这个是一个绑定器,将用户输入的信息或者从IE或者别的地方得到信息绑定到对应的凭证中去。使用spring web flew后,没有被使用了。



目录
相关文章
|
5月前
|
数据处理 虚拟化 图形学
ESXi 8.0U3e 免费版发布,含官方免费许可证 (序列号 SN Key)
ESXi 8.0U3e 免费版发布,含官方免费许可证 (序列号 SN Key)
1431 5
|
7月前
|
机器学习/深度学习 计算机视觉
YOLOv11改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新提高精度
YOLOv11改进策略【YOLO和Mamba】| 2024 VM-UNet,高效的特征提取模块VSS block 二次创新提高精度
834 9
|
机器学习/深度学习 人工智能 编解码
照片也能时间旅行?「穿越时空的人脸」新模型化身AI时光机
照片也能时间旅行?「穿越时空的人脸」新模型化身AI时光机
576 0
|
存储 编解码 数据安全/隐私保护
Ceph保证数据安全的机制
Ceph保证数据安全的机制
441 0
Ceph保证数据安全的机制
|
9天前
|
人工智能 运维 安全
|
7天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
672 23
|
8天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
14天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
1104 110