CAS單點登錄服務器搭建


關於cas單點登錄的原理及介紹這里不做說明了,直接開始:

1、war包下載

去官網(https://www.apereo.org/projects/cas/download-cas)下載cas_server-webapp_xxx.war文件,這里使用的是cas-server-webapp-4.0.0.war。(這里吐槽下,由於cas源碼及war包都已經放到github上面去了,導致下載速度很慢或者無法下載,最后無奈之下去CSDN下載了。。。)

 

2、創建證書

證書是單點登錄認證系統中很重要的一把鑰匙,客戶端於服務器的交互安全靠的就是證書;由於是個人學習測試所以就直接用JDK自帶的keytool工具生成證書;如果以后真正在產品環境中使用肯定要去證書提供商去購買,證書認證一般都是由VeriSign認證,中文官方網站:http://www.verisign.com/cn/

用JDK自帶的keytool工具生成證書:

keytool -genkey -alias cas -keyalg RSA -keystore e:/keys/cas

根據提示信息輸入相關數據回車即可(這里注意要記住創建時的密碼)。

 

3、導出證書

keytool -export -file e:/keys/cas.crt -alias cas -keystore e:/keys/cas

如果提示:

keytool error: java.io.IOException: Keystore was tampered with, or password was incorrect

那么請輸入密碼:changeit

至此導出證書完成,可以分發給應用的JDK使用了。

 

4、為客戶端的JVM導入證書

keytool -import -keystore "C:\Program Files\Java\jdk1.8.0_101\jre\lib\security\cacerts" -file e:/keys/cas.crt -alias cas

同第3步一樣,如果提示輸入密碼,請輸入changeit,至此證書的創建、導出、導入到客戶端JVM都已完成,下面開始使用證書到Web服務器中,這里我使用的是tomcat7服務器。

 

5、應用證書到web服務器

打開tomcat目錄的conf/server.xml文件,設置如下:

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
               maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
               clientAuth="false" sslProtocol="TLS" keystoreFile="e:/keys/cas"  
               keystorePass="111111"/>

參數說明:

  • keystoreFile:在第一步創建的key存放位置
  • keystorePass:創建證書時的密碼

 

6、啟動tomcat服務器

將第1步下載好的war包放到tomcat的webapp目錄下,啟動tomcat,訪問https://localhost:8443/cas/login頁面,輸入casuser/Mellon可以成功登錄表示服務器已經搭建完成。

查看配置文件deployerConfigContext.xml可以獲取默認的用戶名和密碼信息,后續會詳細說明該配置文件。

 

 登錄成功

7、數據庫用戶認證方式配置

在之前的步驟里面,我們已經初步完成了cas單點登錄服務器的搭建,但是很明顯上述用戶的驗證方式不是我們想要的,下面我們來進一步配置cas服務器怎么讀取數據庫的信息進行身份驗證,首先打開:

webapp/cas/WEB-INF/deployerConfigContext.xml

然后進行如下配置修改:

  <!--**********************************注釋*****************************************************
  <entry key-ref="primaryAuthenticationHandler" value-ref="primaryPrincipalResolver" />
  **************************************注釋**************************************************-->   <entry key-ref="dbAuthHandler" value-ref="primaryPrincipalResolver" /> <!--**********************************注釋***************************************************** <bean id="primaryAuthenticationHandler" class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler"> <property name="users"> <map> <entry key="casuser" value="Mellon"/> </map> </property> </bean> **************************************注釋**************************************************--> <!--**********************************新增**************************************************--> <!-- Define the DB Connection --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" p:driverClass="com.mysql.jdbc.Driver" p:jdbcUrl="jdbc:mysql://localhost:3306/ssm?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" p:user="root" p:password="1234" /> <!-- Define the encode method--> <bean id="passwordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder" c:encodingAlgorithm="MD5" p:characterEncoding="UTF-8" /> <bean id="dbAuthHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler" p:dataSource-ref="dataSource" p:sql="select password from t_user where username=?" p:passwordEncoder-ref="passwordEncoder"/> <!--***********************************新增*************************************************-->

最后,加入以下依賴包:c3p0-0.9.1.2.jar,MySQL-connector-Java-5.1.21.jar,cas-server-support-jdbc-4.0.0.jar

重啟tomcat服務器,發現已經可以使用數據庫用戶進行登錄了。

---------------------------------------------------------------------------------------------------------------------------- 

ps:除了代碼之外,咱還可以聊點別的,有興趣可以關注我的個人微信公眾號!


免責聲明!

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



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