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

1、修改系統host,加入html

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

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

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

 

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

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

這裏咱們就看到了CAS認證服務端的war包。數據庫

第四步、配置tomcat的HTTPSapache

【安全證書配置】:
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" />
-->
去掉註釋,修改爲:windows

<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單點登陸認證服務端就部署好了。

相關文章
相關標籤/搜索