`
MiMiEye
  • 浏览: 129909 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Acegi Security整合CAS实例

    博客分类:
  • J2EE
阅读更多

前言

Acegi SecuritySpring Framework的一个子项目,主要专注于容器中应用程序的安全控制。
CAS是耶鲁大学贡献的一个单点登陆系统,提供多个应用程序的单点登陆控制,CAS和acegi进行整合,CAS负责完成认证部分,acegi负责应用程序的授权。
Acegi Security的文档中虽然有关于CAS整合的详细描述,但由于两个系统目前都很活跃,版本不断跟新,完全依照旧版本的文档并不能完成相关的整合工作,下面以实际操作的例子说明acegi如何整合CAS 3.0。由于CAS认证要求系统运行在SSL上,所以在对两个应用程序配置之前,首先要配置容器的证书。
本文配置对象为
CAS Server 3.04
Acegi Security 1.0RC2
Apache Tomcat 5.5.12

配置Tomcat

使用JAVA keytool生成Tomcat 使用证书

  1. keytool -alias tomcat -genkey -keyalg RSA -validity 9999 -storepass password -keypass password
  2. 您的名字与姓氏是什么?
  3.   [localhost]:
  4. 您的组织单位名称是什么?
  5.   [itdcl]:  java dev
  6. 您的组织名称是什么?
  7.   [itdcl]:
  8. 您所在的城市或区域名称是什么?
  9.   [guangzhou]:
  10. 您所在的州或省份名称是什么?
  11.   [guangdong]:
  12. 该单位的两字母国家代码是什么
  13.   [CN]:
  14. CN=localhost, OU=java dev, O=itdcl, L=guangzhou, ST=guangdong, C=CN 正确吗?
  15.   [否]:  y

导出证书到文件中

  1. cd <jre></jre>\lib\security
  2. keytool -export -v -rfc -alias tomcat -file acegisecurity.txt -storepass password
  3.  

把证书设置为本机可信任证书

  1. keytool -import -v -file acegisecurity.txt -keypass password -keystore cacerts -storepass changeit -alias tomcat
  2. Owner: CN=localhost, OU=java dev, O=itdcl, L=guangzhou, ST=guangdong, C=CN
  3. 发照者: CN=localhost, OU=java dev, O=itdcl, L=guangzhou, ST=guangdong, C=CN
  4. 序号: 4420ca9f
  5. 有效期间: Wed Mar 22 11:55:11 CST 2006 至: Sat Aug 06 11:55:11 CST 2033
  6. 认证指纹:
  7.          MD5:  EA:27:FA:1E:B8:C2:05:24:9A:2B:D3:44:8F:0F:C3:78
  8.          SHA1: B7:61:12:19:BF:54:75:D4:E9:A4:EA:9C:2A:5C:A9:B9:17:99:CA:F1
  9. 信任这个认证? [否]:  y
  10. 认证已添加至keystore中
  11. [正在存储 cacerts]

打开Tomcat的ssl端口,配置相关参数

  1. <connector port="8443" maxHttpHeaderSize="8192"
  2.                maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
  3.                enableLookups="false" disableUploadTimeout="true"
  4.                acceptCount="100" scheme="https" secure="true"
  5.                clientAuth="false" sslProtocol="TLS"  keystorePass="password"/>

测试Tomcat SSL安装成功

打开页面https://localhost:8443/jsp-examples,访问相关例子,如果没有异常,说明SSL配置成功

配置CAS Server

重新配置 CAS Server的用户认证部分

打开在WEB-INF中deployerConfigContext.xml,重新配置用户认证,文件本身就是spring的配置文件,在最后增加以下bean

  1. <bean id="inMemoryDaoImpl" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">
  2.   <property name="userMap">
  3.     <value>
  4.       marissa=koala,ROLES_IGNORED_BY_CAS
  5.       dianne=emu,ROLES_IGNORED_BY_CAS
  6.       scott=wombat,ROLES_IGNORED_BY_CAS
  7.       peter=opal,disabled,ROLES_IGNORED_BY_CAS
  8.     value>
  9.   property>
  10. bean>
  11.  
  12. <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">
  13.   <property name="userDetailsService"><ref bean="inMemoryDaoImpl"/>property>
  14. bean>
  15.  
  16. <bean id="MyAuthenticationManager" class="org.acegisecurity.providers.ProviderManager">
  17.   <property name="providers">
  18.     <list>
  19.       <ref bean="daoAuthenticationProvider"/>
  20.     list>
  21.   property>
  22. bean>

用配置好的

  1. <bean id="casAuthenticationHandler" class="org.acegisecurity.adapters.cas3.CasAuthenticationHandler">
  2.   <property name="authenticationManager"><ref bean="MyAuthenticationManager"/>property>
  3. bean>

替代原来的

  1. SimpleTestUsernamePasswordAuthenticationHandler

编译org.acegisecurity.adapters.cas3.CasAuthenticationHandler

因为在acegisecurity 1.0RC2正式发布的CAS adapter里面没有casAuthencationHandler,所以需要从acegisecurity的仓库中把原码check出来
编译casAuthencationHandler, 打包到acegi-security-CAS-1.0.0-RC2.jar

发布CAS应用程序

把重新打包过的acegi-security-CAS-1.0.0-RC2.jaracegi-security-1.0.0-RC2.jar复制到WEB-INF/lib目录中
启动tomcat, 如果看到错误提示信息,则说明CAS Server部署成功

测试CAS部署成功

在浏览器中访问 http://localhost:8080/CAS,根据配置文件的用户信息,这里使用scott/wombat登录,如果提示登录成功,则表示新的用户认证部分修改成功

配置contacts-CAS

确认配置

applicationContext-acegi-security.xml文件中
https://localhost:8443/CAS/为CAS服务器的URL
https://localhost:8443/contacts-CAS为contacts应用程序URL
对于系统默认的可信证书<jre home=""></jre>\lib\security\cacerts可以使用

  1. <property name="trustStore"><value>
  2. /some/path/to/your/lib/security/cacerts
  3. value>property>

配置,如果确信上面import动作已经把证书倒入,可以不用配置这个属性

部署contacts-CAS, 检验是否整合成功
使用http://localhost:8080/contacts-CAS访问应用程序,使用marissa/koala可以正常使用,如果用scott/wombat则为access denied.

 


本文引用地址:http://www.cnpoint.com/web/2007/0107/content_4882.htm

分享到:
评论
2 楼 surpass_li 2007-06-17  
good
1 楼 MiMiEye 2007-06-17  
一篇不错的介绍如何在CAS服务上,应用acegi权限控制机制.

相关推荐

    Practical Quick Start with Acegi Security

    - **CAS认证**:支持Central Authentication Service (CAS)协议进行单点登录。 - **X.509证书认证**:支持使用X.509数字证书进行身份验证。 - **DAO认证**: - 支持通过JDBC或属性文件进行认证。 - 提供密码编码...

    acegi 入门培训教程

    在授权方面,Acegi分为三个主要领域:web请求的授权、调用方法的授权和对单个对象实例的访问控制。这涵盖了Web应用程序中的不同安全需求,从控制用户对网页的访问到限制对业务方法的调用,再到确保用户只能访问他们...

    CAS 单点登录安装笔记3 -- 与acegi集成

    为了使Acegi能够与CAS服务器通信,我们需要创建一个CasClient实例,这通常通过XML配置完成。CasClient包含了与CAS服务器交互的所有必要参数,如服务器地址、服务URL等。 6. **添加权限控制** 在Acegi-context中,...

    springsecurity.pdf

    使用LDAP与Acegi Security集成需要创建LDAP认证器实例,并配置LDAP服务器连接参数。 ##### 17.3 配置 配置LDAP认证涉及到设置服务器地址、端口、查询语法等参数。 #### 十七、CAS认证 ##### 18.1 概览 CAS...

    Acegi安全系统详解

    CAS是一种单点登录(Single Sign-On, SSO)解决方案,Acegi集成了耶鲁大学开发的CAS,使得用户只需一次登录,就能访问多个相互信任的应用系统。 6. **X509认证**: X509证书是公钥基础设施(PKI)的一部分,Acegi...

    Acegi_使用.doc

    其中,“SecureObject”拦截器是Acegi Security的核心组件之一,它体现了该系统的架构特点。如图1所示,关键类之间相互协作,而`AbstractSecurityInterceptor`是其主要实现类。 ![Acegi Key Secure Object Model](#...

    Acegi安全系统详解.doc

    4. Access Control List (ACL):Acegi提供了基于对象实例的访问控制,允许根据对象的属性或状态来限制访问。例如,一个订单如果其价值小于100元,则所有用户都可以查看;但如果超过100元,就只有具有特定权限的用户...

    springsecurity官方文档3.2

    - **历史**: 本章节简要回顾了 Spring Security 的发展历程,包括其前身 Acegi 安全框架的历史背景。 - **版本编号**: 明确了 Spring Security 版本的命名规则,例如 `3.2.0.M2` 中的 `.M2` 表示这是一个里程碑版本...

    Spring security 官网说明文档(英文版)

    Spring Security 最初是在 2004 年由 Ben Alex 开发的 Acegi Security System,随后被集成到 Spring Framework 中,并更名为 Spring Security。随着时间的发展,它逐渐成为企业级应用中不可或缺的安全解决方案。 ##...

    Spring Security 3.0.1 pdf 中文参考文档

    - **背景:** Spring Security 的前身是 Acegi 安全框架,后来被 Spring 社区采纳并重新命名为 Spring Security。 - **发展:** 经过多个版本的迭代,Spring Security 已经成为 Spring 生态系统中最成熟的安全解决...

    SpringOne-Using Spring Security 2

    - **基于Acegi框架**:Spring Security 2是在流行的Acegi安全框架基础上构建的; - **Spring命名空间改进**:通过Spring的命名空间改进了可用性; - **增强的LDAP支持**:提供了更好的LDAP集成能力; - **增强的单点...

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

    Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输 Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、...

    java开源包1

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包2

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包3

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包6

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包5

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

    java开源包10

    开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...

Global site tag (gtag.js) - Google Analytics