`
wusuoya
  • 浏览: 640380 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

CAS 学习一 核心内容学习

    博客分类:
  • SSO
 
阅读更多

在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
      :这个是干嘛的呢?

        根据TGT和service来创建ST,从前面我们知道service就是接入的应用系统,那么ST就是用户(TGT)访问的service的票据。同时会给服务提供验证的credentials.

      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://www.cnblogs.com/jiuzhongguo/archive/2012/04/25/2469685.html

分享到:
评论

相关推荐

    CAS单点登录(SSO)服务端自定义认证+CAS客户端配置+CAS完整使用文档+CAS4.2.7 cas-serv服务端源码 cas-client客户端源码

    CAS(Central Authentication Service)是Java开发的一个开源的单点登录...通过学习和实践,你可以掌握CAS的核心概念,实现自定义认证策略,以及优化客户端集成,从而为你的项目构建一个强大而安全的单点登录系统。

    cas官方文档

    《CAS Protocol》文档是关于CAS协议的核心内容,它详细阐述了CAS的工作原理和交互流程。CAS协议基于HTTP协议,主要有两个核心部分:验证请求(Validation Request)和验证响应(Validation Response)。在用户尝试...

    cas自定义登录页面

    1. **CAS服务器初始化**:CAS服务器是核心组件,负责用户的身份验证。在部署时,将`cas-server-3.5.2`解压缩并将其内容放在Tomcat服务器的`webapps`目录下,这会启动CAS服务。 2. **自定义登录页面**:默认情况下,...

    cas

    标题中的“cas”通常指的是中央...如果你对CAS的源码分析、工具集成或凭证管理有深入的兴趣,这篇博客会是一个很好的学习资源。由于原始内容未提供,具体的细节和示例无法给出,但上述内容提供了可能涵盖的话题范围。

    CAS单点登陆资料学习单点登陆

    CAS单点登录的核心工作流程如下: 1. **用户访问受保护的应用**:用户尝试访问第一个受CAS保护的Web应用时,会被重定向到CAS服务器的登录页面。 2. **CAS服务器的重定向**:如果用户尚未登录,CAS服务器会显示登录...

    cas修改登录页

    在单点登录(Single Sign-On,SSO)系统中,CAS扮演着核心角色,它提供了统一的身份验证服务,使得用户只需要登录一次就可以访问所有相互信任的应用系统。在实际应用中,为了满足企业或组织的个性化需求,往往需要对...

    cas 官方提供的例子改造

    【描述】中的"cas的例子,经过改造后,可以运行调试"意味着这是一个实际的CAS项目实例,可能包含了服务器端和客户端的配置,开发者已经调整了代码以适应特定的环境或者功能需求,并且可以用于学习和测试目的。学习这...

    cas-server-3.5.1和cas-client-3.2.1

    这是CAS服务器端的核心组件,负责处理用户的认证请求和响应。3.5.1版本可能包含以下关键模块: 1. **Web应用程序**:基于Servlet的Web应用,运行在Tomcat、Jetty等Servlet容器上,提供HTTP接口处理SSO登录请求。 2....

    cas-4.0.0.zip

    总之,`cas-4.0.0.zip`是一个丰富的学习资源,不仅适用于想要实现SSO的开发者,也适合对Web安全和身份验证机制感兴趣的任何人。通过深入研究这个压缩包,你可以提升自己的Java Web开发技能,同时增强对网络安全的...

    SpringBoot+Security+Cas

    SpringBoot+Security+Cas是一个集成解决方案,用于构建安全的Web应用程序。这个Demo是为那些希望了解如何在Spring Boot应用中整合Spring Security和CAS(Central Authentication Service)服务的开发者准备的。下面...

    cas-overlay-templcate-5.1.0源码及搭建手册.rar

    总的来说,`cas-overlay-template-5.1.0源码及搭建手册`为CAS的使用者提供了便捷的起点,通过学习和实践,你可以创建一个符合自己需求的单点登录系统。这个过程涉及到的技术包括Java Web开发、Maven构建、Spring框架...

    CAS入门测试

    下面将详细讲解CAS的核心概念和关键组件,以及如何通过这两个子文件进行入门学习。 1. CAS服务器:这是整个认证服务的核心,它负责验证用户的凭证(如用户名和密码),并为通过验证的用户提供一个Ticket Granting ...

    CAS介绍资源页面

    CAS的核心目标是简化用户认证流程,允许用户在一个系统上登录后,无需再次验证即可访问其他支持CAS的系统。它通过一个中央认证服务器来处理用户的登录请求,验证成功后,会向客户端(通常是浏览器)颁发一个票据...

    struts2+cas单点登陆例子

    首先,让我们理解一下CAS(Central Authentication Service)的核心概念。CAS是一个开放源码的SSO解决方案,由耶鲁大学开发,用于验证用户身份并提供单一登录服务。它的主要工作原理是:当用户尝试访问受保护的应用...

    cas.rar_cas java_cas服务端代码_单点登录

    其核心流程包括:用户首次访问受保护资源时会被重定向到CAS服务器进行身份验证,成功后服务器返回一个票据(Ticket),客户端通过这个票据访问资源,资源服务器验证票据有效后允许访问。 2. Java实现:CAS服务器是...

    cas 系统实例 服务端配置(一)

    标题 "cas 系统实例 服务端配置(一)" 提到的是 CAS(Central Authentication Service)系统的一个服务端配置教程。CAS 是一个开源的身份验证框架,主要用于实现单一登录(Single Sign-On, SSO)。在本教程中,我们...

    cas-server-3.5.0-release

    1. **源代码**:这部分包含了CAS服务的Java源代码,开发者可以通过阅读这些代码来了解CAS的工作流程,学习如何扩展或修改其功能。 2. **构建脚本**:可能包括Maven或Gradle等构建工具的配置文件,用于编译、测试和...

    CAS-4.2.7源码

    CAS-4.2.7是CAS项目的一个版本,此版本包含了SSO系统的源代码,便于开发者理解和定制。 SSO的核心概念包括: 1. **服务提供者(Service Provider)**:需要认证的Web应用或服务,它们依赖CAS服务器进行用户身份...

    CAS(SSO)-.zip_CAS_CAS SSO_java sso_sso java

    在"CAS实现单点登录(SSO)经典完整教程.docx"文档中,你可能会学到以下内容: 1. **安装和配置CAS服务器**:包括下载CAS服务器的源码或二进制包,配置服务器的属性文件,如数据库连接、主题设置等。 2. **CAS客户端...

    CAS单点登录demo

    CAS的核心思想是集中式的身份验证,用户只需在一个地方进行登录,之后访问其他已经集成CAS的服务时,不再需要重复登录。其流程主要包括:服务请求、重定向到CAS服务器、用户身份验证、返回Ticket、服务验证Ticket并...

Global site tag (gtag.js) - Google Analytics