文档章节

CAS研究(三)-公用API分析(未完)

abcijkxyz
 abcijkxyz
发布于 2016/07/08 16:31
字数 1313
阅读 1
收藏 0
点赞 0
评论 0

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

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

下面是公用API列表,我们来一个个介绍这些接口的作用吧。

  • 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.authentication.AuthenticationManager
  • org.jasig.cas.authentication.AuthenticationMetaDataPopulator
  • org.jasig.cas.ticket.proxy.ProxyHandler
  • org.jasig.cas.ticket.registry.TicketRegistry
  • org.jasig.cas.ticket.registry.RegistryCleaner
  • org.jasig.cas.ticket.registry.AbstractTicketRegistry
  • org.jasig.cas.ticket.ExpirationPolicy
  • org.jasig.cas.util.UniqueTicketIdGenerator
  • org.jasig.cas.validation.ValidationSpecification
  • org.jasig.cas.validation.Assertion:这个接口主要是定义了,验证服务返回的对象,就是一个断言,你这个ST有没有权限访问,以及TGT访问的ST认证对象。
  • org.jasig.cas.web.bind.CredentialsBinder:这个是一个绑定器,将用户输入的信息或者从IE或者别的地方得到信息绑定到对应的凭证中去。使用spring web flew后,没有被使用了。

本文转载自:http://blog.csdn.net/yuwenruli/article/details/6620463

共有 人打赏支持
abcijkxyz
粉丝 60
博文 6196
码字总数 1876
作品 0
深圳
项目经理
本周突破了CAS-Acegi整合,dwr,JFreechart,JasperReport

本周在项目中解决的问题真是不少,因此大发感慨,如果工资的增长速度能跟技术的增长速度就好了.本周主要完成的工作如下: (1) 上周末在同一机器上实现了Cas服务器和两个基于Acegi的Web应用的单点...

迷途d书童
2012/03/09
204
0
不切割DNA的CRISPR终于诞生!有望攻克肾病、糖尿病等常见病

  近年来,随着科学家们对基因编辑技术的不断探索,锌指核酸内切酶(ZFN)、TALEN 技术相继被发现并应用。而CRISPR-Cas系统一经发现,就因其简便的操作、精准的 DNA 靶向及剪切功能,被生物...

DeepTech深科技
2017/12/14
0
0
如何分析一个项目

数据表研究 大概知道项目的情况 数据表数据研究 进一步知道项目情况 动态数据研究 添加删除,进行一些操作,看看数据的变化。通过变化的数据,来分析项目的功能与内部的奥秘 代码研究 大致知...

桃子红了呐
2016/05/01
0
0
机器人抓取

最近两天参观了华为的自动化工厂,了解到机器人抓取在工业中的应用以及未来的前景,备受鼓舞。作为一个搞机器人抓取(grasping)接近八年的老“grasper”,觉得还是可以写写机器人抓取的前世...

李淼robot
2016/07/20
0
0
丛乐:CRISPR第一批“访客”丨“35岁以下创新35人”中国榜单专栏

  自 1999 年起,《麻省理工科技评论》每年都会推出“35岁以下创新35人”(Innovators Under 35 China)榜单,旨在于全球范围内评选出被认为最有才华、最具创新精神,以及最有可能改变世界...

DeepTech深科技
04/03
0
0
Magento第一期学习班

大家好,我是一个Magento的新手,你是否和我也一样想学习Magento,会遇到以下几种困扰: 第一:Magento功能太多,学习周期太长? 第二:没有系统的资料,自己理解很费力? 第三:没有专业的人员...

Chenzhi ang
2011/02/28
1K
10
学习东西总结:

一.JAVA 基础 1、JAVA并发编程 2.JAVA NIO系列 3.JVM深入了解 4.JAVA性能优化相关研究 5.JAVA7,8新特性 二、数据库 1.数据库优化研究 2.MYSQL高可用性研究 3.MYSQL源码研究 三、网络 1.HTTP...

QH_C
2016/03/25
5
0
盘点你所不知道的十大 Intel 技术成果

近日在美国举行的第十届英特尔研究日上,英特尔研究院展示了过去十年里研发并成功产品化的十大研究项目。英特尔中国研究院的光峰技术(Light Peak)也成功入选。这十大技术分别是: 研究项目一...

oschina
2012/07/07
3K
11
“基因魔剪”对人体无效?研究称 CRISPR 受免疫系统的威胁

  一篇上周(1 月 5 日)刚刚发表的论文揭示:CRISPR-Cas9 基因编辑技术的“切割”工具可能受到人体自身免疫系统的威胁。   该论文发布在生物学预印本网站 bioRxiv 上(尚未经过同行评议...

DeepTech深科技
01/10
0
0
php源码分析方法求教

本人最近在分析天天团购源码,但是里面各种的require_once让我有些崩溃。请问各位大神有什么好的方法啊。 在网上找到了如下方法: 一。先把源代码安装起来,结合它的文档和手册,熟悉其功能和...

kong_resty
2011/11/09
712
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

shell中的函数、shell中的数组、告警系统需求分析

shell中的函数 格式: 格式: function f_name() { command } 函数必须要放在最前面 示例1(用来打印参数) 示例2(用于定义加法) 示例3(用于显示IP) shell中的数组 shell中的数组1 定义数...

Zhouliang6
53分钟前
2
0
用 Scikit-Learn 和 Pandas 学习线性回归

      对于想深入了解线性回归的童鞋,这里给出一个完整的例子,详细学完这个例子,对用scikit-learn来运行线性回归,评估模型不会有什么问题了。 1. 获取数据,定义问题     没有...

wangxuwei
今天
1
0
MAC安装MAVEN

一:下载maven压缩包(Zip或tar可选),解压压缩包 二:打开终端输入:vim ~/.bash_profile(如果找不到该文件新建一个:touch ./bash_profile) 三:输入i 四:输入maven环境变量配置 MAVEN_HO...

WALK_MAN
今天
0
0
33.iptables备份与恢复 firewalld的9个zone以及操作 service的操作

10.19 iptables规则备份和恢复 10.20 firewalld的9个zone 10.21 firewalld关于zone的操作 10.22 firewalld关于service的操作 10.19 iptables规则备份和恢复: ~1. 保存和备份iptables规则 ~2...

王鑫linux
今天
2
0
大数据教程(2.11):keeperalived+nginx高可用集群搭建教程

上一章节博主为大家介绍了目前大型互联网项目的系统架构体系,相信大家应该注意到其中很重要的一块知识nginx技术,在本节博主将为大家分享nginx的相关技术以及配置过程。 一、nginx相关概念 ...

em_aaron
今天
1
0
Apache Directory Studio连接Weblogic内置LDAP

OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使用正则表达式获取用户及组的信息。 后来想到直接用Apache Dire...

wffger
今天
2
0
HFS

FS,它是一种上传文件的软件。 专为个人用户所设计的 HTTP 档案系统 - Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装,...

garkey
今天
1
0
Java IO类库之BufferedInputStream

一、BufferedInputStream介绍 /** * A <code>BufferedInputStream</code> adds * functionality to another input stream-namely, * the ability to buffer the input and to * sup......

老韭菜
今天
0
0
STM 32 窗口看门狗

http://bbs.elecfans.com/jishu_805708_1_1.html https://blog.csdn.net/a1985831055/article/details/77404131...

whoisliang
昨天
1
0
Dubbo解析(六)-服务调用

当dubbo消费方和提供方都发布和引用完成后,第四步就是消费方调用提供方。 还是以dubbo的DemoService举例 -- 提供方<dubbo:application name="demo-provider"/><dubbo:registry address="z...

青离
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部