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的博客系统源码 基于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整合代码"涉及到四个关键的Java开发框架,它们分别是Spring Framework、Spring Security、MyBatis和Struts 2。这四个框架在...
本方案提供了一种集成化的开发环境,即"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框架的一个重要版本,它引入了对RESTful风格的支持,使得构建Web应用更加灵活。REST(Representational State ...
总结,本实例详细介绍了如何使用 Spring MVC 3.0.5、Spring 3.0.5 和 MyBatis 3.0.4 进行全注解开发,涵盖了开发环境配置、Maven 的使用、SSM 整合以及如何在 Eclipse 和 MyEclipse 中集成 Maven。这个教程对于希望...
在3.0.5版本中,Spring引入了更多对注解的支持,使得配置文件的编写更加简洁,降低了XML配置的复杂性。通过`@Component`、`@Service`、`@Repository`和`@Controller`等注解,我们可以声明类的作用域和它们之间的依赖...
总之,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包整合到一起了 里面还有JSON的jar包,是SS2H+JPA的学习必备. 这里面都是jar包,如果想查看web.xml,struts.xml,application.xml,persistense.xml的写法,...
通过学习这个JSP+Struts2.2.1+Spring3.0.5+Hibernate3的学习示例,你可以掌握如何在实际项目中有效地整合这些框架,理解它们如何协同工作以提升开发效率和代码质量。这将为你在Java Web开发领域打下坚实的基础。
总结来说,"Spring 3.0.5+MyBatis3.0.4整合例子"展示了如何利用这两个框架的优势,实现一个可扩展、易维护的企业级应用。这个例子涵盖了Spring的DI和AOP特性,以及MyBatis的SQL映射和数据访问能力,是学习和实践Java...
标题中的"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(Java Open Transaction Manager)结合构建Spring MVC应用的示例项目。这个项目可能旨在演示如何在Spring ...
本资源包"Spring3.0.5+Hibernate3.3 开发用到的lib"显然是一组用于构建基于Spring MVC和Hibernate的项目的库文件集合。下面将详细介绍这两个框架的版本3.0.5和3.3以及它们的关键特性。 **Spring框架3.0.5** Spring...
在本示例中,我们探讨的是如何将SpringMVC 3.0.5与EasyUI 1.3.1相结合,构建一个功能完备的应用。SpringMVC是Spring框架的一部分,用于处理Web应用的模型-视图-控制器(MVC)架构,而EasyUI则是一个基于jQuery的UI库...
Python基于Django 3.0.5和MaterializeCSS(通常简称为Matery)以及SQLite数据库构建的博客系统,是一个适合初学者和进阶开发者学习Web开发的实用案例。这个项目将带你深入理解Django框架的诸多功能,包括模型、视图...
Spring 3.0.5是Spring框架的一个稳定版本,它支持JSF集成,允许开发者利用Spring的强大功能来处理服务层和数据访问层的逻辑。Spring的IoC(Inversion of Control,控制反转)容器使得对象之间的依赖关系可以通过配置...
在本文中,我们将深入探讨如何安装和配置CAS服务器以及客户端Acegi安全系统,以便实现单点登录(SSO)功能。CAS(Central Authentication Service)是一个由耶鲁大学开发的开源SSO解决方案,而Acegi Security System...
这是一个基于Java技术栈的老式项目配置,主要涵盖了Spring 3.0.1、Mybatis 3.0.5、Struts2.2.3.1、Velocity 1.7以及DWZ jQuery UI框架的整合应用。下面将详细介绍这些组件及其在项目中的作用。 **Spring 3.0.1**: ...