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: 没有创建键值对,别名
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
输入
(如果和 keystore 密码相同,按回车):
D:/PROGRA~1/Java/jdk1.5.0/jre/lib/security>keytool -export -alias tomcat -keypass changeit -file casserver.crt
输入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
keytool错误: java.lang.Exception: 认证未输入,别名
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: 认证未输入,别名
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,将其中的全部内容修改为以下:
class="org.jasig.cas.authentication.AuthenticationManagerImpl">
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
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文件中的内容如下:
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
4)在web.xml中添加以下servlet配置:
5)修改原来的applicationContext-acegi-security.xml,注释掉authenticationManager的bean配置,并将所有引用authent
icationManager的Bean的ref属性修改为bean,即修改为。
在filterChainProxy的属性filterInvocationDefinitionSource中插入casProcessingFilter,如下:
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/**=httpSessionContextIntegrationFilter,logoutFilter,casProcessingFilter,basicProcessingFilter,securityContextHolderAwareRequestFilter,rememberMeProcessingFilter,anonymousProcessingFilter,switchUserProcessingFilter,exceptionTranslationFilter,filterInvocationInterceptor
修改所有的j_acegi_security_check为j_acegi_cas_security_check。
将log4j改为debug后,将可以看到凭证。
调试过程中出现javax.servlet.ServletException: need edu.yale.its.tp.cas.proxyUrl
的错误,未知原因。