`
xyz20003
  • 浏览: 292811 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

(翻译)Spring Security-2.0.x参考文档“CAS认证”

阅读更多
Chapter 19. CAS认证
19.1. 概述

JA-SIG开发了一个企业级的单点登录系统,叫做CAS。 与其他项目不同,JA-SIG的中心认证服务是开源的,广泛使用的,简单理解的,不依赖平台的,而且支持代理能力。 Spring Security完全支持CAS,提供一个简单的整合方式,把使用Spring Security的单应用发布,转换成使用企业级CAS服务器的多应用发布安全

你可以从http://www.ja-sig.org/products/cas/找到CAS的更多信息。 你还需要访问这个网站下载CAS服务器文件。
19.2. CAS是如何工作的

虽然CAS网站包含了CAS的架构文档,我们这里还是说一下使用Spring Security环境的一般性概述,。 Spring Security 2.0支持CAS 3。 在写文档的时候,CAS服务器的版本是3.2。

你要在公司内部安装CAS服务器。 CAS服务器就是一个WAR文件,所以安装服务器没有什么难的。 在WAR文件里,你需要自定义登录和其他单点登录展示给用户的页面。

发布CAS 3.2的时候,你也需要指定一个CAS的deployerConfigContext.xml里包含的AuthenticationHandler。 AuthenticationHandler有一个简单的方法,返回布尔值,判断给出的证书集合是否有效。 你的AuthenticationHandler实现会需要链接到后台认证资源类型里,像是LDAP服务器或数据库。 CAS自己也包含非常多AuthenticationHandler帮助实现这些。 在你下载发布服务器war文件的时候,它会把用户名和密码匹配的用户成功验证,这对测试很有用。

除了CAS服务器,其他关键角色当然是你企业发布的其他安全web应用。 这些web应用被叫做"services"。 这儿有两种服务:标准服务和代理服务。 代理服务可以代表用户,从其他服务中请求资源。 后面会进行更详细的介绍。
19.3. 配置CAS客户端

CAS的web应用端通过Spring Security使用起来很简单。 我们假设你已经知道Spring Security的基本用法,所以下面都没有涉及这些。 我们会假设使用基于命名空间配置的方法,并且添加了CAS需要的bean。

你需要添加一个 ServiceProperties bean,到你的application context里。 这表现你的服务:

  <bean id="serviceProperties" class="org.springframework.security.ui.cas.ServiceProperties">
    <property name="service" value="https://localhost:8443/cas-sample/j_spring_cas_security_check"/>
    <property name="sendRenew" value="false"/>
  </bean>
   

这里的service必须是一个由CasProcessingFilter监控的URL。 这个sendRenew默认是false,但如果你的程序特别敏感就应该设置成true。 这个参数作用是,告诉CAS登录服务,一个单点登录没有到达。 否则,用户需要重新输入他们的用户名和密码,来获得访问服务的权限。

下面配置的bean就是展开CAS认证的过程:

<security:authentication-manager alias="authenticationManager"/>

<bean id="casProcessingFilter" class="org.springframework.security.ui.cas.CasProcessingFilter">
  <security:custom-filter after="CAS_PROCESSING_FILTER"/>
  <property name="authenticationManager" ref="authenticationManager"/>
  <property name="authenticationFailureUrl" value="/casfailed.jsp"/>
  <property name="defaultTargetUrl" value="/"/>
</bean>

<bean id="casProcessingFilterEntryPoint"
    class="org.springframework.security.ui.cas.CasProcessingFilterEntryPoint">
  <property name="loginUrl" value="https://localhost:9443/cas/login"/>
  <property name="serviceProperties" ref="serviceProperties"/>
</bean>


   

应该使用 entry-point-ref选择驱动认证的CasProcessingFilterEntryPoint类。

CasProcessingFilter的属性与 AuthenticationProcessingFilter非常相似(在基于表单登录时用到)。 每个属性从字面上都很好理解。 注意我们也使用命名空间语法,为认证管理器设置一个别名,这样CasProcessingFilter需要它的一个引用。

为了CAS的操作,ExceptionTranslationFilter必须有它的authenticationEntryPoint,这里设置成CasProcessingFilterEntryPoint bean。

CasProcessingFilterEntryPoint 必须指向 ServiceProperties bean (上面讨论过了),它为企业CAS登录服务器提供URL。 这是用户浏览器将被重定向的位置。

下一步,你需要添加一个CasAuthenticationProvider 和它的合作伙伴:

  <bean id="casAuthenticationProvider" class="org.springframework.security.providers.cas.CasAuthenticationProvider">
    <security:custom-authentication-provider />
    <property name="userDetailsService" ref="userService"/>
    <property name="serviceProperties" ref="serviceProperties" />
    <property name="ticketValidator">
      <bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
        <constructor-arg index="0" value="https://localhost:9443/cas" />
        </bean>
    </property>
    <property name="key" value="an_id_for_this_auth_provider_only"/>
  </bean>

  <security:user-service id="userService">
    <security:user name="joe" password="joe" authorities="ROLE_USER" />
    ...
  </security:user-service>
     

一旦通过了CAS的认证,CasAuthenticationProvider 使用一个 UserDetailsService实例,来加载用户的认证信息。 这里我们展示一个简单的基于内存的设置。

如果你翻回头看一下"How CAS Works"那节,这些beans都是从名字就可以看懂的。
分享到:
评论
2 楼 yeminping 2008-12-16  
请问:
<security:user-service id="userService">
    <security:user name="joe" password="joe" authorities="ROLE_USER" />
    ...
  </security:user-service>
作用
1 楼 mindxw 2008-11-25  
cas里面的User中有个relativeEntityId是个string类型的,代码里面没有注释,看不出来它是做什么用的

相关推荐

    Spring Security 2.0.x完全中文参考文档

    ### Spring Security 2.0.x完全中文参考文档 #### 序言 本文档旨在为用户提供一份详尽且全面的Spring Security 2.0.x版本的中文指南,它不仅覆盖了核心概念、配置方法以及实际应用案例,还深入探讨了安全框架的...

    Spring Security最新文档(英文)

    4. **示例应用程序**:文档提供了多个示例应用程序,如教程示例、LDAP示例、OpenID示例、CAS示例、JAAS示例和预认证示例,以帮助开发者了解如何在不同场景下应用Spring Security。 5. **Servlet应用程序**:这部分...

    spring-security-reference.pdf

    Spring Security是一个功能强大且高度可定制的认证和访问控制框架,它是针对Java应用程序的安全性需求而设计的。...开发者可以通过阅读官方参考文档来掌握如何在项目中应用和配置Spring Security,实现所需的安全功能。

    spring-security-reference

    ### Spring Security 参考文档概览 #### 一、引言与基础知识 ##### 1.1 什么是 Spring Security? Spring Security 是一个强大的、高度可定制的身份验证和访问控制框架。它为应用程序提供了一种机制来保护自身免...

    Spring Security OAuth过期的解决方法

    如描述中提到,Spring Security OAuth项目已被逐步弃用,取而代之的是Spring Security 5.x中的OAuth2支持。因此,应当选择Spring Security的核心模块,而不是单独的Spring Security OAuth依赖。 3. **利用Spring ...

    cas_sso.rar_CAS_CAS SSO_cas文档_sso C_单点登录

    CAS可以通过插件系统与其他系统进行集成,例如与OAuth、OpenID Connect、SAML等身份协议的互操作,或与Spring Security、Apache Shiro等安全框架配合使用。这使得CAS能够适应更广泛的生态系统。 **维护与监控** ...

    Practical Quick Start with Acegi Security

    - **完整文档**:提供了详尽的参考文档、JavaDoc文档以及相关的书籍资源。 #### 六、支持的应用类型 Acegi安全框架可以应用于各种类型的应用程序,包括但不限于: - **自包含部署包**:如WAR、JAR或EAR文件。 - **...

    JAVA上百实例源码以及开源项目源代码

    图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密 WDSsoft的一款免费源代码 JCT ...

Global site tag (gtag.js) - Google Analytics