CAS單點登錄(SSO)服務端的部署和配置---連接MySQL進行身份認證


一、修改系統host,加入

127.0.0.1 server.test.com
127.0.0.1 client1.test.com
127.0.0.1 client2.test.com

二、安裝gradle,配置好環境變量(請參考gradle的相關資料)

三、首先到github下在CAS的發布的相應版本,https://github.com/apereo/cas/releases,解壓出來

 

進入cas-server-webapp目錄,在此目錄下打開cmd

輸入gradle build回車,build successful編譯打包成功之后,會生成一個build目錄,進入到build的lib目錄

這里我們就看到了CAS認證服務端的war包。

第四步、配置tomcat的HTTPS

【安全證書配置】:
1. 打開cmd命令窗口
2. 生成證書,在cmd窗口輸入以下命令:
keytool -genkey -alias ssodemo -keyalg RSA -keysize 1024 -keypass zhoubang -validity 365 -keystore c:\zhoubang.keystore -storepass zhoubang
【說明】:-alias后面的別名可以自定義,-keypass指定證書密鑰庫的密碼, -storepass和前面keypass密碼相同,否則下面tomcat 配置https 會訪問失敗 -keystore指定證書的位置,這里指定放在c盤根目錄,密鑰庫名稱可以自定義,這里是zhoubang.keystore
3. 命令輸入完成,回車之后,會提示你輸入一些資料,見下圖:

【注意】:第一個讓你輸入的“您的名字與姓氏是什么”
4.導出證書:
在cmd窗口繼續輸入以下命令,導出證書:
keytool -export -alias ssodemo -keystore c:\zhoubang.keystore -file c:\ssodemo.crt -storepass zhoubang
【說明】:-alias后面的名稱要與生成證書的命令里面的alias的名稱一致. –keystore后面指定證書存放的位置,這里我放在C盤根目錄,同時證書名稱要與【生成證書】對應的命令里的keystore名稱一致.這里是zhoubang.keystore,-file后面才crt路徑,我也指定在c盤根目錄. –storepass的證書密碼要與上面輸入的密碼一致.
如下圖所示:
我們再看看c盤下面是否生成crt文件:
5.客戶端導入證書
在cmd窗口輸入命令:
keytool -import -keystore %JAVA_HOME%\jre\lib\security\cacerts -file c:\ ssodemo.crt -alias ssodemo
【說明】:-file指定證書的位置,也就是上一步導出證書的位置,即c:\ ssodemo.crt 命令中指定了JAVA_HOME,意思是將證書導入到客戶端證書庫,也就是jdk證書庫中.因為客戶端應用運行在本地,需要jdk的支持。
回車之后,會讓你輸入密鑰庫口令,注意,這里的密碼必須要輸入changeit,不能輸入上面指定的密碼zhoubang,切記,否則導入客戶端證書會有問題,如果是多台機器演示,需要在每一台客戶端導入該證書,步驟都是一樣的。當看到提示“是否信任此證書”,輸入y回車即可,見下圖:(說明,命令中的-alias后面的別名可以自定義,如果出現【證書未導入,別名<***>已經存在】的錯誤,該意思是說客戶端的密鑰庫中已經存在該別名證書了,重新指定其他別名即可.)

至此,CAS所需的證書環境,已經配置好。
下面,開始我們的CAS服務、Tomcat、以及多客戶端的配置及測試訪問。

● 部署CAS-Server相關的Tomcat
1. 配置HTTPS
解壓apache-tomcat-7.0.57-windows-x64.zip,我本地路徑為E:\apache-tomcat-7.0.57,編輯E:\apache-tomcat-7.0.57\conf\server.xml,找到下面片段:
<!--
<Connector executor="tomcatThreadPool" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
-->
去掉注釋,修改成:

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

其中,keystoreFile就是創建證書的路徑,keystorePass就是創建證書的密碼.
2. 驗證HTTPS配置
其他按照默認配置不作修改,雙擊E:\apache-tomcat-7.0.57\bin \startup.bat 啟動tomcat 驗證https是否配置成功,我本地使用火狐瀏覽器訪問,在地址欄輸入
https://server.test.com:8443/ 出現下面畫面,其實這就表明cas服務端tomcat的https配置是沒有問題了.
點擊【我已充分了解可能的風險】,點擊出現的【添加例外】—【確認安全例外】,,將會出現下面tomcat默認首頁.tomcat已經支持https協議訪問了,一切ok!

 

 第五步、將war包重命名為cas-server-webapp.war,放到tomcat的webapps目錄,進入自動解壓的文件夾

打開屬性配置文件

這個就是測試用戶名和密碼

輸入用戶名密碼驗證登錄

說明部署是沒問題的。

 

第六步、創建一個MySQL數據庫,新建一張users表,添加username和password字段

 

 

第七步、配置數據庫認證

參考官方文檔:https://apereo.github.io/cas/4.2.x/installation/Database-Authentication.html#database-components

 

首先拷貝MySQL驅動到cas-server-webapp項目的lib目錄下

然后到下載的CAS源碼的cas-server-support-jdbc目錄下gradle build編譯jdbc的支持jar包

編譯好之后,同樣到build》libs目錄下拷貝cas-server-support-jdbc-4.2.7.jar包到cas-server-webapp項目的lib目錄下

 

打開deployerConfigContext.xml配置文件

 

將<alias name="acceptUsersAuthenticationHandler" alias="primaryAuthenticationHandler" />這一行注釋掉

加入

<alias name="queryDatabaseAuthenticationHandler" alias="primaryAuthenticationHandler" />
<alias name="dataSource" alias="queryDatabaseDataSource" />

<bean id="dataSource"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
p:driverClass="${database.driverClass}"
p:jdbcUrl="${database.url}"
p:user="${database.user}"
p:password="${database.password}"
p:initialPoolSize="${database.pool.minSize}"
p:minPoolSize="${database.pool.minSize}"
p:maxPoolSize="${database.pool.maxSize}"
p:maxIdleTimeExcessConnections="${database.pool.maxIdleTime}"
p:checkoutTimeout="${database.pool.maxWait}"
p:acquireIncrement="${database.pool.acquireIncrement}"
p:acquireRetryAttempts="${database.pool.acquireRetryAttempts}"
p:acquireRetryDelay="${database.pool.acquireRetryDelay}"
p:idleConnectionTestPeriod="${database.pool.idleConnectionTestPeriod}"
p:preferredTestQuery="${database.pool.connectionHealthQuery}" />

 

,然后打開cas.properties,加入數據庫的相關配置如下:(請修改為自己的數據庫地址,用戶名和密碼)

# == Basic database connection pool configuration ==
database.driverClass=com.mysql.jdbc.Driver
database.url=jdbc:mysql://127.0.0.1:3306/sso_test?useUnicode=true&amp;characterEncoding=UTF-8&amp;
database.user=root
database.password=admin
database.pool.minSize=6
database.pool.maxSize=18

# Maximum amount of time to wait in ms for a connection to become
# available when the pool is exhausted
database.pool.maxWait=10000

# Amount of time in seconds after which idle connections
# in excess of minimum size are pruned.
database.pool.maxIdleTime=120

# Number of connections to obtain on pool exhaustion condition.
# The maximum pool size is always respected when acquiring
# new connections.
database.pool.acquireIncrement=6

# == Connection testing settings ==

# Period in s at which a health query will be issued on idle
# connections to determine connection liveliness.
database.pool.idleConnectionTestPeriod=30

# Query executed periodically to test health
database.pool.connectionHealthQuery=select 1

# == Database recovery settings ==

# Number of times to retry acquiring a _new_ connection
# when an error is encountered during acquisition.
database.pool.acquireRetryAttempts=5

# Amount of time in ms to wait between successive aquire retry attempts.
database.pool.acquireRetryDelay=2000

 

然后重啟tomcat,驗證登錄

 輸入數據庫的賬號密碼

 

至此CAS單點登錄認證服務端就部署好了。


免責聲明!

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



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