CAS单点登录实践

转自:

http://stacker.top/blog/2016/12/24/CAS%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95%E5%AE%9E%E8%B7%B5/

 一、部署tomcat

二、配置tomcat SSL链接

1、首先使用jre的keytool工具生成keystore文件

 C:\Program Files\Java\jdk1.8.0_25\jre\bin>keytool.exe -genkey -alias tomcat -ke

alg RSA
输入密钥库口令:
再次输入新口令:
您的名字与姓氏是什么?
  [Unknown]:
您的组织单位名称是什么?
  [Unknown]:
您的组织名称是什么?
  [Unknown]:
您所在的城市或区域名称是什么?
  [Unknown]:
您所在的省/市/自治区名称是什么?
  [Unknown]:
该单位的双字母国家/地区代码是什么?
  [Unknown]:
CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
  [否]:  是

输入 <tomcat> 的密钥口令
        (如果和密钥库口令相同, 按回车):
 keystore生成之后会存放在用户目录下 C:\Users\zhidong\.keystore
  1. 配置 Tomcat 以使用 keystore 文件

修改tomcat配置文件server.xml使用该keystore文件,内容如下

    <Connector SSLEnabled="true" acceptCount="100" clientAuth="false"
    disableUploadTimeout="true" enableLookups="false" maxThreads="25"
    port="8443" keystoreFile="C:/Users/zhidong/.keystore" keystorePass="james-huang"
    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"
    secure="true" sslProtocol="TLS" />
 1.测试

启动 Tomcat 并访问 https://localhost:8443. 你将看到 Tomcat 默认的首页。如图:

需要注意的是,如果你访问默认的 8080 端口,还是有效的。

三、配置CAS 服务器

1、下载cas server包

2、获取cas-server-webapp-4.0.0.war

3、拷贝到tomcat webapps目录下。

4、tomcat默认autodeploy,即拷贝过去后tomcat会热加载该war包。

5、查询CAS Server登陆页面的用户名密码

该文件apache-tomcat-8.5.9\webapps\cas-server-webapp-4.0.0\WEB-INF\deployerConfigContext.xml中的

    <bean id="primaryAuthenticationHandler"
          class="org.jasig.cas.authentication.AcceptUsersAuthenticationHandler">
        <property name="users">
            <map>
                <entry key="casuser" value="Mellon"/>
            </map>
        </property>
    </bean>

 6、测试页面

四、配置CAS Client

1、下载 cas client的包cas-client-core-3.2.1.jar

2、创建web工程。

3、编辑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>  
            <!--这里的单点登录服务器登录url -->  
            <param-value>https://localhost:8443/cas-server-webapp-4.0.0/login</param-value>  
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <param-value>http://localhost: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>  
            <!-- 该参数需要配置为cas server的url前缀,即不带login -->  
            <param-value>https://localhost:8443/cas-server-webapp-4.0.0</param-value>  
        </init-param>  
        <init-param>  
            <param-name>serverName</param-name>  
            <param-value>http://localhost: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>CAS HttpServletRequest Wrapper Filter</filter-name>  
        <filter-class>org.jasig.cas.client.util.HttpServletRequestWrapperFilter</filter-class>  
    </filter>  
    <filter-mapping>  
        <filter-name>CAS HttpServletRequest Wrapper Filter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>
    <!-- 该过滤器使得开发者可以通过org.jasig.cas.client.util.AssertionHolder来获取用户的登录名。 比如AssertionHolder.getAssertion().getPrincipal().getName()。 -->  
    <filter>  
        <filter-name>CAS Assertion Thread Local Filter</filter-name>  
        <filter-class>org.jasig.cas.client.util.AssertionThreadLocalFilter</filter-class>  
    </filter>  
    <filter-mapping>  
        <filter-name>CAS Assertion Thread Local Filter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
    <!-- ======================== 单点登录结束 ======================== -->
 

4、将web工程导出war包,到tomcat的webapps目录。

5、浏览器访问,该cas client的工程页面。

猜你喜欢

转载自489291468.iteye.com/blog/2347070