1. 產生SERVER的證書庫文件java
ketool工具詳細運用:http://www.micmiu.com/lang/java/keytool-start-guide/mysql
首先確保jdk環境變了正確配置才能夠使用keytool工具,檢測keytool工具:win+r 打開cmd 輸入keytool命令,不報錯就ok了web
以上操做會在當前目錄下產生ssodemo.keystore證書文件sql
2. 在server端配置tomcat使用HTTPSapache
<!-- <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> --> <Connector SSLEnabled="true" clientAuth="false" keystoreFile="D:\test\sso\ssodemo.keystore" keystorePass="111111" maxThreads="150" port="8443" protocol="org.apache.coyote.http11.Http11Protocol" scheme="https" secure="true" sslProtocol="TLS"/>
注意:keystorePass="111111"(這個問證書庫文件的密碼,也就是上面配置產生的一個密碼)keystoreFile="D:\test\sso\ssodemo.keystore" (這是證書庫文件的存放路徑)tomcat
測試:https://localhost:8443/ 正常顯示tomcat主頁面app
3. 添加cas.war webapp
CAS下載地址:http://www.jasig.org/cas/downloadide
本例用的是:3.5.2.1版本工具
下載後有個modules文件夾裏面有個cas-server-webapp-3.5.2.1.war更名cas.war放在tomcat的webapps下
測試 : https://localhost:8443/cas/login 登陸頁面 正常顯示 默認帳號/密碼admin /admin
https://localhost:8443/cas/logout 登出
4. 配置 casDataSource
打開文件 /webapps/cas/WEB-INF/deployerConfigContext.xml,添加一個新的 bean 標籤
而且將 cas-server-support-jdbc-3.1.1.jar(下載的cas裏面modules文件夾有) 拷貝到 /webapps/cas/ WEB-INF/lib
DataStore 依賴於 commons-collections-3.2.jar, commons-dbcp-1.2.1.jar, commons-pool-1.3.jar,mysql jar(驅動jar)
<bean id="casDataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>com.mysql.jdbc.Driver</value> </property> <property name="url"> <value>jdbc:mysql://localhost:3306/test</value> </property> <property name="username"> <value>root</value> </property> <property name="password"> <value>123456</value> </property> </bean>
5. 添加一個新的 bean 查詢 QueryDatabaseAuthenticationHandler(在deployerConfigContext.xml裏面)
<bean class="org.jasig.cas.adaptors.jdbc.QueryDatabaseAuthenticationHandler"> <property name="dataSource" ref="casDataSource" /> <property name="sql" value="select password from user where username = ?" /> <property name="passwordEncoder" ref="MD5PasswordEncoder" ></property> </bean>
說明:select password from user where username = ? user爲登陸信息表 username爲登陸名稱 password爲登陸密碼
passwordEncoder密碼爲設置密碼解密機制,若是不須要解密能夠刪除
添加 MD5PasswordEncoder bean:
<bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.DefaultPasswordEncoder"> <constructor-arg index="0" value="md5" /> </bean>
6. 自定義MD5 Encoder(若是上面的md5密碼驗證不符合項目須要)
<!--數據驗證模 我本身實現的MD5接口--> <bean id="MD5PasswordEncoder" class="org.jasig.cas.authentication.handler.Crypt"></bean>
類的實現(注意包名,和上面的class要一致,把編譯的class文件放在cas web應用對應目錄下):
package org.jasig.cas.authentication.handler; public class Crypt implements PasswordEncoder{ /** * 進行加密編碼 * @param s 要加密的字符串 * @return 加密後的字符串 */ public String encode(String s) { MD5 md5=new MD5(); String ecd=md5.getMD5ofStr(s) ; System.out.println("-------- need =["+ecd+"]") ; return ecd; } }