概要
在默認情況下,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>
具體的代碼在平台提供的項目中。