CAS入门 安装及测试

本文档详细介绍了CAS入门过程,包括安装SSO服务器、配置SSL、部署CAS Server 3.5.2以及进行工程测试。通过配置hosts、启用Tomcat SSL,实现了sso.convicteva.com的登录验证。测试阶段创建了两个工程demoa和demob,确保了跨应用的单点登录功能正常工作。
1、生成证书
>keytool -genkey -alias convict -keyalg RSA -keystore D:/keys/convicteva

其中名字与姓氏这一写sso登录的域名:sso.convicteva.com

导出证书
>keytool -export -alias convict -file D:/keys/convicteva.crt -keystore D:/keys/convicteva

输入上一步的密码


将证书文件convicteva.crt导入到名为cacerts的证书库中
>keytool -import -keystore D:\keys\cacerts -file D:/keys/convicteva.crt -alias convicteva

输入同样的密码。在d:/keys/  可以看到生成的相关文件。

参考:http://www.cnblogs.com/xdp-gacl/p/3750965.html



2、配置sso 服务器(服务器 192.168.174.130)
安装jdk(1.7),下载tomcat7.0
上传1步骤生成的证书等文件到/opt/webapp/keys 目录。
配置Tomcat启用SSL:

<Connector port="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" 
	protocol="org.apache.coyote.http11.Http11Protocol"
	maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
	clientAuth="false" sslProtocol="TLS" keystoreFile="/opt/webapp/keys/convicteva" 
	keystorePass="masz921" truststoreFile="/opt/webapp/keys/cacerts" />
keystoreFile 为证书文件
keystorePass 生成证书文件的密码
truststoreFile 受信任的证书库(客户端使用sso服务,需要在客户商户端jre/lib/security 目录下导入第1步骤生成的证书库文件。这样在连接到sso 服务器时才是受信任的,否则跳转到sso服务时会报500:javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException,注意jre和jdk/jre 中都有security)。


3、安装sso 服务
下载CAS Server 3.5.2(4.0.0 版本证书验证不过,应该是证书没有通过认证)
下载地址:https://www.apereo.org/projects/cas/download-cas
解压后把modules/cas-server-webapp-3.5.2.war  复制到tomcat webapps 目录下,改名为cas.war。启动tomcat

配置hosts:
192.168.174.130 sso.convicteva.com

浏览器输入地址:https://sso.convicteva.com:8443/cas


输入用户名和密码admin/admin,登录成功。




4、工程测试

创建两个工程:demoa,demob(端口分别使用8080,8081),只有一个简单的登录成功后的页面。
demoa 工程 web.xml 配置:

<!-- ======================== 单点登录配置 ======================== -->
    <!-- 用于单点退出,该过滤器用于实现单点登出功能,可选配置-->
    <listener>
        <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>
    </listener>
    <!--该过滤器用于实现单点登出功能,可选配置。 -->
    <filter>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>CAS Single Sign Out Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--  该过滤器负责用户的认证工作,必须启用它 -->
    <filter>
        <filter-name>CASFilter</filter-name>
        <filter-class>org.jasig.cas.client.authentication.AuthenticationFilter</filter-class>
        <init-param>
            <param-name>casServerLoginUrl</param-name>
            <param-value>https://sso.convicteva.com:8443/cas/login</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://sso.demoa.com:8080</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CASFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--该过滤器负责对Ticket的校验工作,必须启用它 -->
    <filter>
        <filter-name>CAS_Validation_Filter
        </filter-name>
        <filter-class>
            org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
        </filter-class>
        <init-param>
            <param-name>casServerUrlPrefix</param-name>
            <param-value>https://sso.convicteva.com:8443/cas</param-value>
        </init-param>
        <init-param>
            <param-name>serverName</param-name>
            <param-value>http://sso.demoa.com:8080</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>CAS_Validation_Filter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--
    该过滤器负责实现HttpServletRequest请求的包裹,
    比如允许开发者通过HttpServletRequest的getRemoteUser()方法获得SSO登录用户的登录名,可选配置。
    -->
    <filter>

        <filter-name>HttpServletRequestWrapperFilter</filter-name>
        <filter-class>
            org.jasig.cas.client.util.HttpServletRequestWrapperFilter
        </filter-class>
    </filter>

    <filter-mapping>
        <filter-name>HttpServletRequestWrapperFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--
    该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。
    比如AssertionHolder.getAssertion().getPrincipal().getName()。
    -->
    <filter>
        <filter-name>assertionThreadLocalFilter</filter-name>
        <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>assertionThreadLocalFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- ======================== 单点登录结束 ======================== -->

    <servlet>
        <servlet-name>IndexServlet</servlet-name>
        <servlet-class>com.convicteva.sso.servlet.IndexServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>IndexServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
demob web.xml  把上面的serverName 的值替换为:http://sso.demob.com:8081。代码相同

配置hosts:
127.0.0.1 sso.demoa.com
127.0.0.1 sso.demob.com

输入demoa 工程域名 http://sso.demoa.com:8080 跳转到sso 登录页面。
输入用户名和密码 admin/admin 回跳到sso.demoa.com:8080

此时输入sso.demob.com:8081 跳转到demob工程登录成功的页面

注意:测试工程运行的jdk 要导入第一步导出的证书库,即sso服务器的信任的证书配置(truststoreFile)。


测试工程代码:http://download.csdn.net/detail/convict_eva/9653850


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值