`
javasogo
  • 浏览: 1825863 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

cas3.0.5+acegi1.0.1+tomcat5.5.17 sso 配置指引

阅读更多
1.配置tomcat的ssl: 1)生成证书: 控制台cd到%JAVA_HOME%/jre/lib/security目录下,按以下步骤操作: D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>keytool -genkey -alias tomcat -keyalg RSA 输入keystore密码: changeit keytool错误: java.lang.Exception: 没有创建键值对,别名 <tomcat> 已经存在

D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>keytool -delete -alias tomcat -keyalg RSA 输入keystore密码: changeit

D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>keytool -genkey -alias tomcat -keyalg RSA 输入keystore密码: changeit 您的名字与姓氏是什么? [Unknown]: localhost 您的组织单位名称是什么? [Unknown]: mycom 您的组织名称是什么? [Unknown]: mycom 您所在的城市或区域名称是什么? [Unknown]: zhuzhou 您所在的州或省份名称是什么? [Unknown]: hunan 该单位的两字母国家代码是什么 [Unknown]: cn CN=localhost, OU=mycom, O=mycom, L=zhuzhou, ST=hunan, C=cn 正确吗? [否]: y

输入<tomcat>的主密码 (如果和 keystore 密码相同,按回车):

D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>keytool -export -alias tomcat -keypass changeit -file casserver.crt 输入keystore密码: changeit 保存在文件中的认证 <casserver.crt>

D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>keytool -import -file casserver.crt -keypass changeit -keystore %JAVA_HOME%/jre/lib/security/cacerts 输入keystore密码: changeit keytool错误: java.lang.Exception: 认证未输入,别名 <mykey> 已经存在

D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>keytool -delete -alias mykey -keystore %JAVA_HOME%/jre/lib/security/cacerts 输入keystore密码: changeit

D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>keytool -import -file casserver.crt -keypass changeit -keystore %JAVA_HOME%/jre/lib/security/cacerts 输入keystore密码: changeit Owner: CN=localhost, OU=mycom, O=mycom, L=zhuzhou, ST=hunan, C=cn 发照者: CN=localhost, OU=mycom, O=mycom, L=zhuzhou, ST=hunan, C=cn 序号: 44f67974 有效期间: Thu Aug 31 13:53:56 CST 2006 至: Wed Nov 29 13:53:56 CST 2006 认证指纹: MD5: D2:A8:3A:37:96:36:97:88:42:9E:F8:9A:5B:FB:F5:5E SHA1: 91:0E:63:82:25:E8:04:72:5F:8B:0D:6B:39:55:C2:1E:C8:77:F3:CB 信任这个认证? [否]: y 认证已添加至keystore中

D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>keytool -import -file server.crt -keystore %JAVA_HOME%\jre\lib\security\cacerts 输入keystore密码: changeit keytool错误: java.io.FileNotFoundException: server.crt (系统找不到指定的文件。)

D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>keytool -import -file casserver.crt -keystore %JAVA_HOME%\jre\lib\security\cacerts 输入keystore密码: changeit keytool错误: java.lang.Exception: 认证未输入,别名 <mykey> 已经存在

D:\PROGRA~1\Java\jdk1.5.0\jre\lib\security>

生成证书的名称必须为localhost (您的名字与姓氏是什么?) 2)tomcat中解除ssl的注释,server.xml中找到 Connector port="8443" ... 的语句,解除其原来的注释。 2.安装cas3的server端。将cas.war解压到webapps目录下,拷贝文件acegi-security-1.0.1.jar和acegi-security-cas-1.0.1.jar到目录/cas/WEB-INF/lib下, 并修改其中的/cas/WEB-INF/deployerConfigContext.xml,将其中的全部内容修改为以下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="authenticationManager" class="org.jasig.cas.authentication.AuthenticationManagerImpl"> <property name="credentialsToPrincipalResolvers"> <list> <bean class="org.jasig.cas.authentication.principal.UsernamePasswordCredentialsToPrincipalResolver" /> <bean class="org.jasig.cas.authentication.principal.HttpBasedServiceCredentialsToPrincipalResolver" /> </list> </property> <property name="authenticationHandlers"> <list> <bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler" /> <bean class="org.acegisecurity.adapters.cas3.CasAuthenticationHandler"> <property name="authenticationManager" ref="acegiAuthenticationManager" /> </bean> </list> </property> </bean> <bean id="inMemoryDaoImpl" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl"> <property name="userMap"> <value> marissa=koala,ROLES_IGNORED_BY_CAS dianne=emu,ROLES_IGNORED_BY_CAS scott=wombat,ROLES_IGNORED_BY_CAS peter=opal,disabled,ROLES_IGNORED_BY_CAS </value> </property> </bean> <bean id="daoAuthenticationProvider" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"> <property name="userDetailsService"><ref bean="inMemoryDaoImpl"/></property> </bean> <bean id="acegiAuthenticationManager" class="org.acegisecurity.providers.ProviderManager"> <property name="providers"> <list> <ref bean="daoAuthenticationProvider"/> </list> </property> </bean> </beans>

3.安装acegi客户端。 1)解压文件acegi-security-sample-contacts-filter.war到目录contacts-cas中,并将此目录拷贝到webapps目录下。 2)拷贝文件casclient.jar到contacts-cas/WEB-INF/lib目录下。 3)在目录contacts-cas/WEB-INF/中添加一个文件applicationContext-cas.xml, 并将此文件加到web.xml中的contextConfigLocation变量添加一个值:/WEB-INF/applicationContext-cas.xml applicationContext-cas.xml文件中的内容如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<!-- - Application context containing authentication beans. - - Used by all artifacts. - - $Id: applicationContext-common-authorization.xml 1426 2006-04-28 06:51:58Z benalex $ -->

<beans> <bean id="serviceProperties" class="org.acegisecurity.ui.cas.ServiceProperties"> <property name="service"><value>https://localhost:8443/contacts-cas/j_acegi_cas_security_check</value></property> <property name="sendRenew"><value>false</value></property> </bean> <bean id="casProcessingFilter" class="org.acegisecurity.ui.cas.CasProcessingFilter"> <property name="authenticationManager"><ref bean="authenticationManager"/></property> <property name="authenticationFailureUrl"><value>/casfailed.jsp</value></property> <property name="defaultTargetUrl"><value>/</value></property> <property name="filterProcessesUrl"><value>/j_acegi_cas_security_check</value></property> </bean>

<bean id="exceptionTranslationFilter" class="org.acegisecurity.ui.ExceptionTranslationFilter"> <property name="authenticationEntryPoint"><ref local="casProcessingFilterEntryPoint"/></property> </bean>

<bean id="casProcessingFilterEntryPoint" class="org.acegisecurity.ui.cas.CasProcessingFilterEntryPoint"> <property name="loginUrl"><value>https://localhost:8443/cas/login</value></property> <property name="serviceProperties"><ref bean="serviceProperties"/></property> </bean> <bean id="authenticationManager" class="org.acegisecurity.providers.ProviderManager"> <property name="providers"> <list> <ref bean="casAuthenticationProvider"/> </list> </property> </bean>

<bean id="casAuthenticationProvider" class="org.acegisecurity.providers.cas.CasAuthenticationProvider"> <property name="casAuthoritiesPopulator"><ref bean="casAuthoritiesPopulator"/></property> <property name="casProxyDecider"><ref bean="casProxyDecider"/></property> <property name="ticketValidator"><ref bean="casProxyTicketValidator"/></property> <property name="statelessTicketCache"><ref bean="statelessTicketCache"/></property> <property name="key"><value>my_password_for_this_auth_provider_only</value></property> </bean>

<bean id="casProxyTicketValidator" class="org.acegisecurity.providers.cas.ticketvalidator.CasProxyTicketValidator"> <property name="casValidate"><value>https://localhost:8443/cas/proxyValidate</value></property> <property name="proxyCallbackUrl"><value>https://localhost:8443/contacts-cas/casProxy/receptor</value></property> <property name="serviceProperties"><ref bean="serviceProperties"/></property> <property name="trustStore"><value>D:\Program Files\Java\jdk1.5.0\jre\lib\security\cacerts</value></property> </bean>

<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation"> <value>classpath:/ehcache-failsafe.xml</value> </property> </bean> <bean id="ticketCacheBackend" class="org.springframework.cache.ehcache.EhCacheFactoryBean"> <property name="cacheManager"> <ref local="cacheManager"/> </property> <property name="cacheName"> <value>ticketCache</value> </property> </bean> <bean id="statelessTicketCache" class="org.acegisecurity.providers.cas.cache.EhCacheBasedTicketCache"> <property name="cache"><ref local="ticketCacheBackend"/></property> </bean>

<bean id="casAuthoritiesPopulator" class="org.acegisecurity.providers.cas.populator.DaoCasAuthoritiesPopulator"> <property name="userDetailsService"><ref bean="inMemoryDaoImpl"/></property> </bean>

<bean id="casProxyDecider" class="org.acegisecurity.providers.cas.proxy.RejectProxyTickets"/>

<bean id="inMemoryDaoImpl" class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl"> <property name="userMap"> <value> marissa=koala,ROLES_IGNORED_BY_CAS dianne=emu,ROLES_IGNORED_BY_CAS scott=wombat,ROLES_IGNORED_BY_CAS peter=opal,disabled,ROLES_IGNORED_BY_CAS </value> </property> </bean> </beans>

4)在web.xml中添加以下servlet配置: <servlet> <servlet-name>casproxy</servlet-name> <servlet-class>edu.yale.its.tp.cas.proxy.ProxyTicketReceptor</servlet-class> </servlet> <servlet-mapping> <servlet-name>casproxy</servlet-name> <url-pattern>/casProxy/*</url-pattern> </servlet-mapping>

5)修改原来的applicationContext-acegi-security.xml,注释掉authenticationManager的bean配置,并将所有引用authent icationManager的Bean的ref属性修改为bean,即修改<ref local="authenticationManager"/>为<ref bean="authenticationManager"/>。 在filterChainProxy的属性filterInvocationDefinitionSource中插入casProcessingFilter,如下: <bean id="filterChainProxy" class="org.acegisecurity.util.FilterChainProxy"> <property name="filterInvocationDefinitionSource"> <value> CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON PATTERN_TYPE_APACHE_ANT /**=httpSessionContextIntegrationFilter,logoutFilter,casProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,switchUserProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor </value> </property> </bean>

修改所有的j_acegi_security_check为j_acegi_cas_security_check。

将log4j改为debug后,将可以看到凭证。

调试过程中出现javax.servlet.ServletException: need edu.yale.its.tp.cas.proxyUrl 的错误,未知原因。

分享到:
评论

相关推荐

    基于Django3.0.5+Python3.7+SQLite的博客系统源码.zip

    基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于Django3.0.5+Python3.7+SQLite的博客系统源码 基于...

    Spring Framework 3.0.5+Spring Security 3.0.5+ mybatis 3.0.5+ Struts 2.2.3整合代码

    标题中的"Spring Framework 3.0.5+Spring Security 3.0.5+ mybatis 3.0.5+ Struts 2.2.3整合代码"涉及到四个关键的Java开发框架,它们分别是Spring Framework、Spring Security、MyBatis和Struts 2。这四个框架在...

    MyEclipse7.5+flex4+spring3.0.5+struts2.2.1+hibernate3.6.0+blazeds4.0.0.14931完美整合方案

    本方案提供了一种集成化的开发环境,即"MyEclipse7.5+flex4+spring3.0.5+struts2.2.1+hibernate3.6.0+blazeds4.0.0.14931完美整合方案",它将多个流行的技术框架整合在一起,为Web应用程序开发提供了一个强大的平台...

    Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解

    【Spring MVC 3.0.5 + Spring 3.0.5 + MyBatis3.0.4 全注解实例详解】 Spring MVC 3.0.5 是Spring框架的一个重要版本,它引入了对RESTful风格的支持,使得构建Web应用更加灵活。REST(Representational State ...

    Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解完整版

    总结,本实例详细介绍了如何使用 Spring MVC 3.0.5、Spring 3.0.5 和 MyBatis 3.0.4 进行全注解开发,涵盖了开发环境配置、Maven 的使用、SSM 整合以及如何在 Eclipse 和 MyEclipse 中集成 Maven。这个教程对于希望...

    Spring+MVC+3.0.5+Spring+3.0.5+MyBatis3.0.4全注解实例详解

    在3.0.5版本中,Spring引入了更多对注解的支持,使得配置文件的编写更加简洁,降低了XML配置的复杂性。通过`@Component`、`@Service`、`@Repository`和`@Controller`等注解,我们可以声明类的作用域和它们之间的依赖...

    Spring3.0.5+Mybatis3.0.5+Struts2.0.6整合

    总之,Spring 3.0.5、Mybatis 3.0.5和Struts2.0.6的整合是一个复杂但重要的过程,它涉及到多个层次的配置和代码编写。理解每个框架的核心功能和它们之间的协作机制,是成功完成整合的关键。通过这样的整合,我们可以...

    Struts2 2.1.8 + Spring 3.0.5 + Hibernate 3.6.0 + JPA2 jar

    Struts2 2.1.8 + Spring 3.0.5 + Hibernate 3.6.0 + JPA2的jar包整合到一起了 里面还有JSON的jar包,是SS2H+JPA的学习必备. 这里面都是jar包,如果想查看web.xml,struts.xml,application.xml,persistense.xml的写法,...

    JSP+Struts2.2.1+Spring3.0.5+Hibernate3学习示例

    通过学习这个JSP+Struts2.2.1+Spring3.0.5+Hibernate3的学习示例,你可以掌握如何在实际项目中有效地整合这些框架,理解它们如何协同工作以提升开发效率和代码质量。这将为你在Java Web开发领域打下坚实的基础。

    Spring 3.0.5+MyBatis3.0.4整合例子

    总结来说,"Spring 3.0.5+MyBatis3.0.4整合例子"展示了如何利用这两个框架的优势,实现一个可扩展、易维护的企业级应用。这个例子涵盖了Spring的DI和AOP特性,以及MyBatis的SQL映射和数据访问能力,是学习和实践Java...

    CXF2.7+SPRING3.0.5+HIBERNATE3.6final+STRUTS2

    标题中的"CXF2.7+SPRING3.0.5+HIBERNATE3.6final+STRUTS2"代表了一个集成开发环境,其中包含了四个关键的技术框架:Apache CXF 2.7、Spring 3.0.5、Hibernate 3.6 Final以及Struts2。这些框架在Java Web开发中起着...

    spring 3.0.5 + jotm 实现的的spring mvc 的例子

    标题中的“spring 3.0.5 + jotm 实现的的spring mvc 的例子”表明这是一个关于使用Spring 3.0.5版本与JOTM(Java Open Transaction Manager)结合构建Spring MVC应用的示例项目。这个项目可能旨在演示如何在Spring ...

    Spring3.0.5+Hibernate3.3 开发用到的lib

    本资源包"Spring3.0.5+Hibernate3.3 开发用到的lib"显然是一组用于构建基于Spring MVC和Hibernate的项目的库文件集合。下面将详细介绍这两个框架的版本3.0.5和3.3以及它们的关键特性。 **Spring框架3.0.5** Spring...

    springmcv3.0.5+easyui示例

    在本示例中,我们探讨的是如何将SpringMVC 3.0.5与EasyUI 1.3.1相结合,构建一个功能完备的应用。SpringMVC是Spring框架的一部分,用于处理Web应用的模型-视图-控制器(MVC)架构,而EasyUI则是一个基于jQuery的UI库...

    python基于Django3.0.5+Matery+SQLite的博客系统

    Python基于Django 3.0.5和MaterializeCSS(通常简称为Matery)以及SQLite数据库构建的博客系统,是一个适合初学者和进阶开发者学习Web开发的实用案例。这个项目将带你深入理解Django框架的诸多功能,包括模型、视图...

    jsf1.2+Spring3.0.5+Mybatis

    Spring 3.0.5是Spring框架的一个稳定版本,它支持JSF集成,允许开发者利用Spring的强大功能来处理服务层和数据访问层的逻辑。Spring的IoC(Inversion of Control,控制反转)容器使得对象之间的依赖关系可以通过配置...

    CAS及客户端Acegi的安装配置指南

    在本文中,我们将深入探讨如何安装和配置CAS服务器以及客户端Acegi安全系统,以便实现单点登录(SSO)功能。CAS(Central Authentication Service)是一个由耶鲁大学开发的开源SSO解决方案,而Acegi Security System...

    Spring3.0.1+Mybatis3.0.5+Struts2.2.3.1+velocity1.7+DWZ

    这是一个基于Java技术栈的老式项目配置,主要涵盖了Spring 3.0.1、Mybatis 3.0.5、Struts2.2.3.1、Velocity 1.7以及DWZ jQuery UI框架的整合应用。下面将详细介绍这些组件及其在项目中的作用。 **Spring 3.0.1**: ...

Global site tag (gtag.js) - Google Analytics