先說單點登陸是個啥?mysql
單點登陸主要用於多系統集成,即在多個系統中,用戶只須要到一箇中央服務器登陸一次便可訪問這些系統中的任何一個,無須屢次登陸。git
配置的步驟以下:github
1.生成安全證書web
Cas server默認的安全認證是基於https協議的,這就要求在應用程序和CAS Server端配置SSL協議。(固然也能夠在cas server中配置讓其能夠用http訪問)spring
要使用https協議,就須要使用安全證書,這裏咱們經過JDK自帶的應用keytool來製做。這種自用的證書是不受瀏覽器信任的。(會提示,可是選擇高級選項,直接訪問就行)sql
生成安全證書使用keytool,keytool是一個Java數據證書的管理工具。數據庫
keytool將密鑰(key)和證書(certificates)存在一個稱爲密鑰庫keystore的文件中,在keystore裏,apache
包含兩種數據:
密鑰實體(Key entity)——密鑰(secret key)又或者是私鑰和配對公鑰(採用非對稱加密)瀏覽器
可信任的證書實體(trusted certificate entries)——只包含公鑰tomcat
步驟:
1)用keytool生成密鑰庫keystore
2)用keytool在密鑰庫keystore中導出證書cer文件
3)將證書導入到jdk中的信任的證書庫cacerts
前兩個網上搜索方法,下面只說第三步如何操做:
Win7及以上系統的話請在管理員模式下運行命令提示符窗口。修改對應內容後在命令提示符執行如下命令:
cd D:\jdk1.7.0_21\jre\lib\security
keytool -import -alias localhost -file D:\localhost.cer -noprompt -trustcacerts -storetype jks -keystore cacerts -storepass 123456
其中,
D:\jdk1.7.0_21\jre\lib\security是jdk安裝路徑及其下面的對應目錄,
-alias localhost是選擇密鑰別名,
D:\localhost.cer是導入的cer公鑰證書文件路徑,
-storepass 123456是設置密鑰密碼。
附:若是導入失敗,能夠先把security目錄下的cacerts刪掉。
若是出現「Caused by: sun.security.validator.ValidatorException: PKIX path building failed:」很大機率是證書導入失敗(即便是顯示導入成功了)或者程序運行的JDK不是導入證書的JDK。
(必定要注意這個問題,被坑過!!)
2.在tomcat中配置端口使用ssl協議
注意哪一個端口配置了ssl協議,就只有哪一個端口可使用sll連接(一樣的在cas客戶端配置的時候踩坑提醒!)
配置說明:
在Tomcat目錄下conf/server.xml文件中,將如下命令的對應內容修改後拷貝到<Connector>同級的位置(能夠看到有和如下命令相似的被註釋掉的代碼)。紅色字爲須要按照實際狀況修改的內容,下同。
Tomcat 7:
<Connector SSLEnabled="true" clientAuth="false" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol" scheme="https" secure="true" sslProtocol="TLS" keystoreFile="E:\localhost.keystore" keystorePass="123456"/>
Tomcat 6:
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="E:\localhost.keystore" keystorePass="123456"/>
其中,
keystoreFile="E:\localhost.keystore" keystorePass="123456",指的是所密鑰的位置和密鑰的密碼(安全密鑰爲目錄下的localhost.keystore文件,密碼已經設置爲123456)。
port="8443"指的是https端口號,建議使用8843。
3.部署cas server服務器
在github上下載cas server 的4.1.1的版本(你們能夠嘗試別的版本),可是在使用4.0.0的過程當中發現一個bug,困擾我好久,就是有時候登陸和退出須要操做兩次,網上有人說多是請求異步的緣由,後來換成4.1.1版本後就行了 。
將這個文件夾導入eclipse,在tomcat上部署運行便可。
而後訪問該項目https://localhost:8443/cas-server-webapp,跳轉到登陸頁面
到這裏,咱們的需求是輸入用戶名密碼,而後cas server去數據庫查詢比對,正確就登陸成功。那麼數據庫的查詢配置在哪呢?
找到src/main/webapp/web-inf//cas-server-webapp/src/main/webapp/WEB-INF/deployerConfigContext.xml
<!--配置查詢的數據源,這個bean是本身添加的-->
<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/shirotest"/> <property name="username" value="root"/> <property name="password" value="root"/> </bean>
<!--注意原來就有這個bean,提供了一個測試的用戶名和密碼,如今修改它。--> <bean id="primaryAuthenticationHandler" class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="dataSource" /> <property name="sql" value="select password from account where name=?" /> </bean>
這樣數據數據庫中的用戶名和密碼就能訪問成功了。