Server版本:cas-server-3.5.2
Client版本:cas-client-3.1
SSL配置方式:
第一步:生成證書密鑰
進入到cmd後輸入
keytool -genkey -alias tomcat -keystore mykeystore -keyalg RSA -validity 2000
根據提示輸入密碼:changeit,
您的名字與姓氏是什麼?(這裏一定要輸入域名,本機測試輸入localhost)
剩下的問題隨便輸入即可。
這是會在C:\Documents and Settings\Administrator目錄下面生成一個mykeystore文件,繼續輸入
keytool -export -alias tomcat -keystore mykeystore -file server.crt
密碼也是輸入changeit,操作成功的話會在目錄下面生成一個server.crt的文件,接着執行
keytool -import -alias tomcat -file server.crt -keystore %JAVA_HOME%/jre/lib/security/cacerts
密碼輸入完成後,確認正確即完成了密鑰的創建。
第二步:配置應用服務器,我用的是Tomcat7
打開tomcat安裝目錄下的conf/server.xml,添加如下代碼
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" keystoreFile="C:/Users/Andy/mykeystore"
keystorePass="changeit"/>
第三步:部署CAS應用
解壓縮cas-server-3.3.5-release.zip,在\cas-server-3.3.5\modules文件夾下有cas-server-webapp-3.3.5.war文件,爲標準的WEB應用程序。發佈之前,將文件重命名爲cas.war,採用標準的war包發佈方式進行應用發佈。
每三步:重新cas裏的密碼認證方式爲MD5
<span style="">public class PasswordEncoder implements org.jasig.cas.authentication.handler.PasswordEncoder{
@Override
public String encode(String password) {
return MD5Encoder.getMD5Str(password);
}
}</span>
將這個類打成jar包放到cas裏的lib文件裏
第四步:配置cas驗證方式爲數據庫查詢方式,將查詢的sql指到你用到的用戶表就好
從下載包中將cas-server-support-jdbc-3.3.5.jar文件複製與cas\web-inf\lib文件夾下。
該包提供了 3 個基於 JDBC 的 AuthenticationHandler,分別爲BindModeSearchDatabaseAuthenticationHandler, QueryDatabaseAuthenticationHandler, SearchModeSearchDatabaseAuthenticationHandler
我們這裏使用的是QueryDatabaseAuthenticationHandler,它是通過配置一個 SQL 語句查出密碼,與所給密碼匹配
根據密碼加密方式的不同,實現PasswordEncoder接口,來對輸入的密碼進行加密才能與數據庫中的密碼比較。
新增com.ist.cas.CASPasswordEncoder.java類, implements PasswordEncoder接口,數據庫密碼採取MD5算法加密:
具體如上一步
// MD5密碼加密 public String encode(String strSource) { MD5 theMD5 = new MD5(); String strPassMD5 = theMD5.getMD5ofStr(strSource); return strPassMD5; } |
修改cas\web-inf\ deployerConfigContext.xml文件:
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="casDataSource" /> <property name="sql" value="select password from tb_user where login_name = ?" /> <property name="passwordEncoder" ref="myPasswordEncoder"/> </bean> |
數據源和密碼加密bean配置如下:
<bean id="myPasswordEncoder" class="com.ist.cas.CASPasswordEncoder"/> <bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>oracle.jdbc.driver.OracleDriver</value> </property> <property name="url"> <value>jdbc:oracle:thin:@192.168.99.98:1521:FIDWDB</value> </property> <property name="username"> <value>funduser</value> </property> <property name="password"> <value>funduser</value> </property> </bean> |