CAS 单点登录服务器集群部署

概要

在默认情况下,cas单点登录服务器时不支持集群的,支持集群需要解决的问题:

1.服务器session的同步问题

2.服务票据在不同机器上同步的问题

实现

1.部署架构

应用通过NGINX和后端的cas交互。

2.实现session集群

如果不实现session集群,那么登录时会出现登录不了的情况。

修改 web.xml 增加

<filter>
        <filter-name>j2cache-session-filter</filter-name>
        <filter-class>com.redxun.cas.J2CacheSessionFilter</filter-class>
        <init-param>
            <param-name>session.maxSizeInMemory</param-name>
            <param-value>2000</param-value>
        </init-param>
        <init-param>
            <param-name>session.maxAge</param-name>
            <param-value>1800</param-value>
        </init-param>
      
        <init-param>
            <param-name>cookie.name</param-name>
            <param-value>J2CACHE_SESSION_ID</param-value>
        </init-param>
        <init-param>
            <param-name>cookie.path</param-name>
            <param-value>/</param-value>
        </init-param>
        <init-param>
            <param-name>cookie.domain</param-name>
            <param-value></param-value>
        </init-param>
    </filter>
 
    <filter-mapping>
        <filter-name>j2cache-session-filter</filter-name>
        <url-pattern>*</url-pattern>
    </filter-mapping>

3.实现票据同步

默认情况下票据是每台cas服务器独立存储的,这样在集群的情况下,就会出现客户端验证票据时,找不到票据异常的报错。

<bean id="ticketRegistry" class="com.redxun.cas.J2CacheTicketRegistry">
   <property name="cache" ref="iCache"></property>
   <property name="tgtTimeout" value="28800"></property>
   <property name="stTimeout" value="20"></property>
 </bean>
 <bean id="iCache" class="com.redxun.cas.J2CacheImpl" init-method="init" destroy-method="destroy"></bean>

具体的代码在平台提供的项目中。

原文地址:https://www.cnblogs.com/Jeely/p/13032668.html