CAS5.2x单点登录(十四)---------cas集群部署

之前我们说过使用jpa或者redis来存储tgt,本以为到这一步的时候寄已经完成了cas的集群部署,但是测试了一下发现并没有成功。后面发现原来是session还没有共享。
对于集群部署我们需要解决的就是session共享的问题,而session共享有好多种方式,当然最常用的就是redis,而我们这里也使用redis来共享session。
这里分为两步来做。
第一步:tgt的redis缓存,这个可以参考我们上几篇文章。
第二步:session的redis缓存,我们阅读cas提供的文档发现他提供了几种方法。
1、Client-side Sessions
2、Server-side Sessions
3、Hazelcast Session Replication
4、Redis Session Replication
5、MongoDb Session Replication
具体描述可以参考这个文档cas文档地址
我们直接采用redis来做session的缓存。
我们引入依赖

	
	    org.apereo.cas
	    cas-server-webapp-session-redis
	    ${cas.version}
	

引入完成后,去配置文件里面进行配置,配置地址也可以参考官方文档配置描述
我们这边直接将他的配置给提供出来

cas.webflow.autoconfigure=true
cas.webflow.alwaysPauseRedirect=false
cas.webflow.refresh=true
cas.webflow.redirectSameState=false
cas.webflow.session.lockTimeout=30
cas.webflow.session.compress=false
cas.webflow.session.maxConversations=5
cas.webflow.session.storage=true
spring.session.store-type=redis
spring.redis.host=localhost
spring.redis.port=6379
cas.tgc.crypto.enabled=false 

然后分别启动两个cas,使用nginx进行代理,nginx的配置如下所示
CAS5.2x单点登录(十四)---------cas集群部署_第1张图片
然后我们在浏览器使用localhost/cas/login进行访问并登陆,这个时候发现我们的redis中缓存了tgt和session。如下图所示
CAS5.2x单点登录(十四)---------cas集群部署_第2张图片
这个时候我们进行退出的时候发现他们也一起退出了。到这里我们的cas集群也已经部署成功了。
注意
使用redis进行session的缓存的时候,我们配置了一个这个配置
cas.tgc.crypto.enabled=false ,起初没有配置这个的时候(当然.signing.key和encryption.key也没有配置)。发现进去无法进行共享session,后面查阅资料发现原来我们cas每次启动的时候回随机生成这两个key的值,这样集群部署的时候就会出现这两个值不一样。当然除了配置false以外,还有一种方式就是将这两个值给写死也行。

参考资料:https://blog.csdn.net/qq_34021712/article/details/82313920

你可能感兴趣的:(cas)