CAS與spring3集成

Server版本:cas-server-3.5.2

Client版本:cas-client-3.1

 

SSL配置方式:

第一步:生成證書密鑰 

進入到cmd後輸入

  1. keytool -genkey -alias tomcat -keystore mykeystore -keyalg RSA -validity 2000 

根據提示輸入密碼:changeit,

您的名字與姓氏是什麼?(這裏一定要輸入域名,本機測試輸入localhost)

剩下的問題隨便輸入即可。

這是會在C:\Documents and Settings\Administrator目錄下面生成一個mykeystore文件,繼續輸入

  1. keytool -export -alias tomcat -keystore mykeystore -file server.crt 

密碼也是輸入changeit,操作成功的話會在目錄下面生成一個server.crt的文件,接着執行

  1. 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

Java代碼  收藏代碼

  1. <span style="">public class PasswordEncoder implements org.jasig.cas.authentication.handler.PasswordEncoder{  

  2.   

  3.     @Override  

  4.     public String encode(String password) {  

  5.         return  MD5Encoder.getMD5Str(password);  

  6.     }  

  7. }</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>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章