CAS 配置使用方法
?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?CAS 配置使用方法
?
1.//服务器用:
//选择删除以前的认证
keytool -delete -alias tomcatsso -keystore cacerts -storepass changeit
//查询是否还有
keytool -list -keystore cacerts -storepass changeit
//生成cacerts认证
keytool -genkey -keyalg RSA -alias tomcatsso -dname "cn=localhost" -keystore cacerts -storepass changeit
说明:在生成key的过程,"cn=www.test.com" 中的www.test.com为Server端的域名(必填)。
将cacerts文件复制到TOMCAT的conf目录下修改server.xml
<Connector port="8080" protocol="HTTP/1.1"?
?????????????? connectionTimeout="20000"?
?????????????? redirectPort="443" />
<Connector port="8443" minSpareThreads="5" maxSpareThreads="75"???
?????????? enableLookups="true" disableUploadTimeout="true"?????
?????????? acceptCount="100" maxThreads="200"???
?????????? scheme="https" secure="true" SSLEnabled="true"???
?????????? clientAuth="false" sslProtocol="TLS"
?????????? keystoreFile="conf/cacerts" keystorePass="changeit"
?????????? truststoreFile="conf/cacerts"/>
deployerConfigContext.xml配置
a、在%CATALINA_HOME%/webapps/cas/WEB-INF/deployerConfigContext.xml文件中添加
<bean id="casDataSource" destroy-method="close">?
??? <property name="driverClassName">?
??????? <value>oracle.jdbc.driver.OracleDriver</value>?
??? </property>?
??? <property name="url">?
??????? <value>jdbc:oracle:thin:@127.0.0.1:1521:orcl</value>?
??? </property>?
??? <property name="username">?
??????? <value>stock</value>?
??? </property>?
??? <property name="password">?
??????? <value>111111</value>?
??? </property>?
</bean>?
b、在 cas-server-support-jdbc-3.3.jar 包中,提供了 3 个基于 JDBC 的 AuthenticationHandler,分别为 BindModeSearchDatabaseAuthenticationHandler, QueryDatabaseAuthenticationHandler, SearchModeSearchDatabaseAuthenticationHandler。其中 BindModeSearchDatabaseAuthenticationHandler 是用所给的用户名和密码去建立数据库连接,根据连接建立是否成功来判断验证成功与否;QueryDatabaseAuthenticationHandler 通过配置一个 SQL 语句查出密码,与所给密码匹配;SearchModeSearchDatabaseAuthenticationHandler 通过配置存放用户验证信息的表、用户名字段和密码字段,构造查询语句来验证。使用哪个 AuthenticationHandler,需要在 deployerConfigContext.xml 中设置,默认情况下,CAS 使用一个简单的 username=password 的 AuthenticationHandler,在文件中可以找到如下一行:
<bean />
我们可以将其注释掉,换成我们希望的一个 AuthenticationHandler,比如,使用QueryDatabaseAuthenticationHandler 或 SearchModeSearchDatabaseAuthenticationHandler 可以分别选取
<bean ref="casDataSource" />?
??? <property name="sql" value="select password from xt_yhxx where lower(YHMC) = lower(?)" />?
??? <property name="passwordEncoder" ref="myPasswordEncoder"/>?
</bean>
或者
<bean id="SearchModeSearchDatabaseAuthenticationHandler" singleton="true" lazy-init="default" autowire="default" dependency-check="default">?
<property name="tableUsers">?
?? <value>xt_yhxx</value>?
</property>?
<property name="fieldUser">?
?? <value>YHMC</value>?
</property>?
<property name="fieldPassword">?
?? <value>password</value>?
</property>?
<property name="dataSource" ref=" casDataSource " />?
</bean>
c、由于存放在数据库中的密码通常是加密过的,所以 AuthenticationHandler 在匹配时需要知道使用的加密方法,在 deployerConfigContext.xml 文件中我们可以为具体的 AuthenticationHandler 类配置一个 property,指定加密器类
<bean id="myPasswordEncoder" + reqWrapper.getRemoteUser());
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/pengchua/archive/2009/01/12/3758422.aspx
?
以上来自http://hi.baidu.com/lurim/blog/item/7e09fdf46b6e9a2cbc3109df.html