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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章