在內部管理系統中,我們需要進行單點登陸來統一管理所有子系統的入口。最終我們選用了耶魯大學的cas系統來作爲單點登陸的服務器。
現在先來說下如何部署cas系統
前置條件:
java版本:1.7.0_15
cas服務器版本:4.0.0
配置的cas服務器域名爲 sso.xxx.com
cas服務器下載地址:http://developer.jasig.org/cas/
具體步驟如下:
一、生成證書並配置tomcat
1、生成證書
在cmd中使用下面java的keytool 來生成證書
生成到D盤的security目錄
keytool -genkey -alias sso.xxx.com -keyalg RSA -keystore d:/security/xxx-sso -validity 1000 -dname "CN=sso.xxx.com, OU=xxx, O=xxx, L=guangzhou, ST=guangdong, C=ZH"
會依次輸出下列內容
輸入密鑰庫口令:
再次輸入新口令:
輸入 的密鑰口令
(如果和密鑰庫口令相同, 按回車):
我使用的密碼是 000000
2、導出證書
導出證書crt文件到D盤的security目錄
keytool -export -file d:/security/xxx-sso.crt -alias sso.xxx.com -keystore d:/security/xxx-sso
3、爲客戶端的jvm導入證書 jvm的cacerts默認祕鑰爲changeit
keytool -import -keystore "%JAVA_HOME%\jre\lib\security\cacerts" -file D:/security/xxx-sso.crt -alias sso.xxx.com -storepass changeit
4、配置tomcat
因爲cas是使用https協議進行傳輸的,需要配置tomcat對8443的支持
在tomcat的web.xml配置8443端口
<Connector port="8443" protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="TLS"
SSLEnabled="true" clientAuth="false" keystoreFile="D:/security/xxx-sso" keystorePass="000000" maxThreads="150" />
二、生成cas服務器的maven項目
1、新建maven web項目,命名爲xxx-cas-server
2、把cas-server-webapp-4.0.0下的所有內容拷貝到webapp目錄下
3、把cas-server-webapp-4.0.0/WEB-INF/classes下的所有文件拷貝到src/main/sources目錄
這是因爲部署之後的classes下的文件是會被刪除的,只有放在這個目錄才能保證部署時在classes目錄下。
4、把classes/lib下的jar包都添加到classpath中
5、修改登陸驗證實現類
cas的登陸deployerConfigContext.xml中的primaryAuthenticationHandler來配置登陸實現類。因此,我們需要實現AbstractUsernamePasswordAuthenticationHandler這個抽象類來實現自己的邏輯,我是用了AD域的驗證方式來進行驗證的。
public class ADAuthenticationHandler extends AbstractUsernamePasswordAuthenticationHandler {
@Override
protected HandlerResult authenticateUsernamePasswordInternal(
UsernamePasswordCredential credential) throws GeneralSecurityException,
PreventedException {
String userName = credential.getUsername();
String password = credential.getPassword();
boolean loginSuccess = userName.equals("xxx") && password.equals("xxx");
if (loginSuccess) {
return createHandlerResult(credential, new SimplePrincipal(userName), null);
} else {
throw new FailedLoginException();
}
}
}
修改deployerConfigContext.xml中的primaryAuthenticationHandler指向到上面的類:
<bean id="primaryAuthenticationHandler" class="com.xxx.cas.authentication.ADAuthenticationHandler"></bean>
三、部署tomcat
把第二步中的cas-server項目部署到第一步中的tomcat中,啓動。
通過網址https://sso.xxx.com:8443/訪問可以看到cas的登陸頁面