CAS服務器配置


參考文獻:

http://sucre.blog.51cto.com/1084905/683624

1.安裝部署CAS Server

從官網下載CAS Server,今天發現CAS Server的官網居然被牆掉了,感嘆天朝的神奇之處。后來從同事那里拷貝到了cas-server-3.5.2-release.zip。我將其發布到百度雲盤上面:http://pan.baidu.com/s/1kUfzh

解壓縮這個ZIP包以后,到路徑\cas-server-3.5.2-release\cas-server-3.5.2\modules下拷貝cas-server-webapp-3.5.2.war這個war包至tomcat的webapps目錄下。為了登錄方便,我們將cas-server-webapp-3.5.2.war重命名為cas.war,啟動tomcat以后會自動解壓縮這個war,在webapps目錄下生一個一個cas目錄。

2.驗證CAS Server安裝成功

啟動tomcat,訪問https://localhost:8443/cas,如果能夠出現以下界面就表示CAS Server部署成功。

雖然 CAS Server 已經部署成功,但這只是一個缺省的實現,在默認的server界面,只要輸入用戶名和密碼相同,就可以登錄,比如我們都輸入aaa,然后點擊登陸。

3.擴展認證接口(JDBC)

當然,在實際使用的時候,這樣做肯定是不行的,還需要根據實際概況做擴展和定制,最主要的是擴展認證 (Authentication) 接口和 CAS Server 的界面。我們通常都會使用jdbc連接數據庫進行認證,這種情況,用戶名和密碼被保存在數據庫的某個表中。需要進行如下配置。

在MySQL數據庫下創建一個叫做CAS的數據,然后在該數據庫中創建一張app_user表,然后在這張表中插入數據,創建表和插入記錄的sql腳本如下:

CREATE TABLE `app_user` (  
  `username` varchar(30) NOT NULL default '',  
  `password` varchar(45) NOT NULL default '',  
  PRIMARY KEY  (`username`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;  
--並添加如下用戶:  
INSERT INTO `app_user` (`username`,`password`) VALUES   
 ('test','111'),  
 ('user','222'),  
 ('tom','333'),  
 ('jim','000'); 

用編輯器打開%CATALINA_HOME%/webapps/cas/WEBINF/deployerConfigContext.xml,找到

<bean class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />

將其注釋掉,然后在同一級別下面添加一個bean,其內容如下所示:

            <!--
                <bean 
                    class="org.jasig.cas.authentication.handler.support.SimpleTestUsernamePasswordAuthenticationHandler" />
                -->    
                <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> 
                    <property name="sql" value="select password from app_user where username=?" /> 
                    <property name="dataSource" ref="dataSource" /> 
                 </bean>     

然后在添加一個bean,這個bean是跟authenticationManager同一級別的,注意這個很重要,這個bean不是跟之前那個bean class同級。其內容如下:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" > 
                    <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property> 
                    <property name="url"><value>jdbc:mysql://localhost:3306/cas</value></property> 
                    <property name="username"><value>root</value></property> 
                    <property name="password"><value>root</value></property> 
                </bean> 

如果不想單獨再創建一個bean id的話,可以通過通過如下配置完成,並且這個bean使用了密碼校驗,可以從數據表user中查詢用戶密碼,並對密碼進行MD5加密校驗,這個認證器位於cas-server-support-jdbc包中。

    <bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler">
                    <property name="dataSource">
                        <bean id="dataSource"
                            class="org.springframework.jdbc.datasource.DriverManagerDataSource">
                            <property name="driverClassName" value="com.mysql.jdbc.Driver" />
                            <property name="url" value="jdbc:mysql://localhost:3306/cas?useUnicode=true&amp;characterEncoding=utf-8" />
                            <property name="username" value="root" />
                            <property name="password" value="root" />
                        </bean>
                    </property>
                    <property name="sql" value="select password from app_user where username=?" />
                    <property name="passwordEncoder">
                        <bean class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder">
                            <constructor-arg value="MD5" />
                        </bean>
                    </property>
                </bean>                

然后從\cas-server-3.5.2-release\cas-server-3.5.2\modules目錄下拷貝cas-server-support-jdbc-3.5.2.jar,再下載mysql-connector-java-5.1.26-bin.jar,將這兩個文件拷貝到%CATALINA_HOME%/webapps/cas/WEB-INF/lib目錄下。

此時在登錄https://localhost:8443/cas,然后使用jim/000,test/111,tom/333,user/222,test/test,test/1234,可以發現,前面四組是可以通過驗證的,而后面兩組驗證失敗。通過驗證以后,再次登陸https://localhost:8443/cas,會提示已經登錄,此時如果要注銷,可以在輸入:https://localhost:8443/cas/logout

在配置文件中可以看到,這里的認證器配置的是一個list,默認情況下,只要有一個認證器通過認證,就認為是合法的用戶,建議選擇合適的認證器放在最前面。比如說,如果不注釋之前的SimpleTestUsernamePasswordAuthenticationHandler這個認證器。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM