一,需求
因為公司內部子系統較多,需要建立一個門戶網站把各個子系統接入進來,實現統一登錄。
二,單點登錄原理
Shiro 1.2開始提供了Jasig CAS單點登錄的支持,單點登錄主要用於多系統集成,即在多個系統中,用戶只需要到一個中央服務器登錄一次即可訪問這些系統中的任何一個,無須多次登錄。此處我們使用Jasig CAS v4.0.0版本。
三,配置服務端
1,生成證書
使用JDK的keytool命令,生成證書(包含證書/公鑰/私鑰)到D:\localhost.keystore:
keytool -genkey -keystore "D:\localhost.keystore" -alias localhost -keyalg RSA -validity 36500
輸入密鑰庫口令: 123456 //后面會用到,需要記住
再次輸入新口令: 123456
您的名字與姓氏是什么?
[Unknown]: localhost //實際情況中為服務器的域名
您的組織單位名稱是什么?
[Unknown]: bestpay
您的組織名稱是什么?
[Unknown]: bestpay
您所在的城市或區域名稱是什么?
[Unknown]: shanghai
您所在的省/市/自治區名稱是什么?
[Unknown]: shanghai
該單位的雙字母國家/地區代碼是什么?
[Unknown]: cn
CN=localhost, OU=bestpay, O=bestpay, L=shanghai, ST=shanghai, C=cn是否正確?
[否]: y
輸入 <localhost> 的密鑰口令
(如果和密鑰庫口令相同, 按回車):
通過如上步驟,生成證書到D:\ localhost.keystore
2,修改tomcat的server.xml
此處使用了apache-tomcat-7.0.40版本,打開conf/server.xml,找到:
1 <!-- 2 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 3 maxThreads="150" scheme="https" secure="true" 4 clientAuth="false" sslProtocol="TLS" /> 5 -->
替換為:
1 <Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" 2 maxThreads="150" scheme="https" secure="true" 3 clientAuth="false" sslProtocol="TLS" 4 keystoreFile="D:\localhost.keystore" keystorePass="123456"/>
keystorePass就是生成keystore時設置的密碼。
3,將其cas-server-webapp模塊封裝到服務端的項目模塊中,目錄結構如圖:
4,啟動tomcat,輸入https://localhost:8443/login,輸入用戶名:casuser,密碼:Mellon即可登錄
四,配置客戶端