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