概要
在默认情况下,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>
具体的代码在平台提供的项目中。