囉嗦幾句:證書是單點登陸認證系統中很重要的一把鑰匙,客戶端於服務器的交互安全靠的就是證書;本教程因爲是演示因此就本身用JDK自帶的keytool工具生成證書;若是之後真正在產品環境中使用確定要去證書提供商去購買,證書認證通常都是由VeriSign認證,
中文官方網站:http://www.verisign.com/cn/
html
命令:keytool -genkey -alias wsria -keyalg RSA -keystore d:/keys/wsriakeyjava
無圖不給力,有圖有真相:mysql
具體的輸入項圖片中都有說明,有一點我要解釋一下;在輸入完密碼後提示輸入域名是我輸入的是sso.wsria.com,其實這個域名是不存在的,可是我爲了演示因此虛擬了這個域名,技巧在於修改C:\Windows\System32\drivers\etc\hosts,添加內容以下:web
127.0.0.1 sso.wsria.com算法
這樣在訪問sso.wsria.com的時候實際上是訪問的127.0.0.1也就是本機spring
嚴重提醒:提示輸入域名的時候不能輸入IP地址sql
命令:D:\keys>keytool -export -file d:/keys/wsria.crt -alias wsria -keystore d:/keys/wsriakey數據庫
來點顏色:apache
至此導出證書完成,能夠分發給應用的JDK使用了,接下來說解客戶端的JVM怎麼導入證書
命令:keytool -import -keystore D:\tools\jdk\1.6\jdk1.6.0_20\jre\lib\security\cacerts -file D:/keys/wsria.crt -alias wsria
來點顏色瞧瞧:
特別說明:D:\tools\jdk\1.6\jdk1.6.0_20\jre\lib\security — 是jre的目錄;密碼仍是剛剛輸入的密碼。
至此證書的建立、導出、導入到客戶端JVM都已完成,下面開始使用證書到Web服務器中,本教程使用tomcat。
說是應用起始作的事情就是啓用Web服務器(Tomcat)的SSL,也就是HTTPS加密協議,爲何加密我就不用囉嗦了吧……
準備好一個乾淨的tomcat,本教程使用的apache-tomcat-6.0.29
打開tomcat目錄的conf/server.xml文件,開啓83和87行的註釋代碼,並設置keystoreFile、keystorePass修改結果以下:
參數說明:
好了,到此Tomcat的SSL啓用完成,如今你能夠啓動tomcat試一下了,例如本教程輸入地址:https://sso.wsria.com:8443/
打開的是:
好的,那麼咱們點擊「繼續瀏覽此網站(不推薦)。 」,如今進入Tomcat目錄了吧,若是是那麼你又向成功邁進了一步。
OK,接下來要配置CAS服務器了。
你成功了嗎?若是沒有成功請再檢查以上步驟!
上面的初體驗僅僅是簡單的身份驗證,實際應用中確定是要讀取數據庫的數據,下面咱們來進一步配置CAS服務器怎麼讀取數據庫的信息進行身份驗證。
首先打開tomcat/webapp/cas/WEB-INF/deployerConfigContext.xml文件,配置的地方以下:
在文件的末尾以前加入以下代碼:
每一個Filter的功能我就很少說了,都有註釋的,關鍵要解釋一下AutoSetUserAdapterFilter的做用和原理.
查看完整的web.xml請猛擊這裏(Google code)
CAS服務端(cas-server)的界面只能在測試的時候用一下,真正系統上線確定須要定製開發本身的頁面,就想網易和CSDN的統一認證平臺同樣,全部子系統的認證都經過此平臺來轉接,你們能夠根據他們的頁面本身定製出適合所屬應用或者公司的界面;簡單介紹一下吧,複製cas\WEB-INF\view\jsp\default\ui的一些JSP文件,每個文件的用途文件名已經區分了,本身修改了替換一下就能夠了。
例如:
登陸界面:casLoginView.jsp
登陸成功:casGenericSuccess.jsp
登出界面:casLogoutView.jsp
花了一下午時間終於寫完了,總共十項也算完美了。
如今看來起始利用CAS實現單點登陸其實不難,不要畏懼,更不要排斥!
本教程後面的代碼部分均來自本博客的wsria-demo項目分支wsria-demo-sso
和本教程相關資料下載: