1、采用统一的ticket存取策略,所有ticket的操作都从中央缓存redis中存取。
2、采用session共享,tomcat的session的存取都从中央缓存redis中存取。(这一步可省略,我是将验证码放到了session中所以做session共享)
第一步:redis存储ticket
参考文档
https://apereo.github.io/cas/5.3.x/installation/Redis-Ticket-Registry.html
https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties-Common.html#redis-configuration
pom添加依赖
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-support-redis-ticket-registry</artifactId>
<version>${cas.version}</version>
</dependency>
配置application.properties文件
#配置redis存储ticket
cas.ticket.registry.redis.host=127.0.0.1
cas.ticket.registry.redis.database=0
cas.ticket.registry.redis.port=6379
cas.ticket.registry.redis.password=
cas.ticket.registry.redis.timeout=5000
cas.ticket.registry.redis.useSsl=false
cas.ticket.registry.redis.usePool=true
cas.ticket.registry.redis.pool.max-active=20
cas.ticket.registry.redis.pool.maxIdle=8
cas.ticket.registry.redis.pool.minIdle=0
cas.ticket.registry.redis.pool.maxActive=8
配置结束。
重启cas 登录之后测试一下,查看redis 里面是不是有CAS_TICKET:开头的key了。
第二步:session存入redis
参考文档
https://apereo.github.io/cas/5.3.x/installation/Webflow-Customization-Sessions.html
pom添加依赖
<dependency>
<groupId>org.apereo.cas</groupId>
<artifactId>cas-server-webapp-session-redis</artifactId>
<version>${cas.version}</version>
</dependency>
配置application.properties文件
#配置redis存储session
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=127.0.0.1
spring.redis.password=wsc123456
spring.redis.port=6379
加密配置
cas.tgc.maxAge=-1
cas.tgc.crypto.enabled=true
cas.tgc.crypto.encryption.key=密文
cas.tgc.crypto.signing.key=密文
cas.webflow.crypto.alg=AES
cas.webflow.crypto.enabled=true
cas.webflow.crypto.signing.key=密文
cas.webflow.crypto.encryption.key=密文
测试
启动之后,可以看到redis中已经有了session的信息
这2步缺一不可
参考文章