cas服務器的搭建

在內部管理系統中,我們需要進行單點登陸來統一管理所有子系統的入口。最終我們選用了耶魯大學的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的登陸頁面

發佈了24 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章