cas5.3.14入门三,TGT,Session的redis存储

上次cas5.3.14入门二,cas介绍及登陆流程讲到CAS Server 生成一个TGT对象,放入自己的缓存,本片介绍一下如何将TGT存储到redis,为什么要把它存储到redis 呢,为了高可用以及扩展集群部署,集群部署的时候显然存储在内存中是不合适的

先看官网:https://apereo.github.io/cas/5.3.x/ 

官方提供了这么多存储TGT的方式,咱们只说redis 的方式,其他方式都可以参照配置。

参照官网

首先配置maven,其实还需要另外一个依赖

                <dependency>
                    <groupId>org.apereo.cas</groupId>
                    <artifactId>cas-server-support-redis-ticket-registry</artifactId>
                    <version>${cas.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.apereo.cas</groupId>
                    <artifactId>cas-server-support-redis-service-registry</artifactId>
                    <version>${cas.version}</version>
                </dependency>

cas在 application.properties的所有配置都是通过CasConfigurationProperties这个类来读取的,我们看看这个类,打开我们按照上节说到的overlay项目,我使用的IDEA 工具配置了eclipse的快捷键,ctrl+shift+t 查找类,CasConfigurationProperties中看到这个

在代码中我们看到这一行,再点进去,这个类里面提供了各种ticket 的配置说明

public class TicketProperties implements Serializable {

    private static final long serialVersionUID = 5586947805593202037L;

    /**
     * Properties and settings related to session-transient tickets.
     */
    @NestedConfigurationProperty
    private TransientSessionTicketProperties tst = new TransientSessionTicketProperties();

    /**
     * Properties and settings related to proxy-granting tickets.
     */
    @NestedConfigurationProperty
    private ProxyGrantingTicketProperties pgt = new ProxyGrantingTicketProperties();

    /**
     * Properties and settings related to ticket encryption.
     */
    @NestedConfigurationProperty
    private EncryptionJwtSigningJwtCryptographyProperties crypto = new EncryptionJwtSigningJwtCryptographyProperties();

    /**
     * Properties and settings related to proxy tickets.
     */
    @NestedConfigurationProperty
    private ProxyTicketProperties pt = new ProxyTicketProperties();

    /**
     * Properties and settings related to ticket registry.
     */
    @NestedConfigurationProperty
    private TicketRegistryProperties registry = new TicketRegistryProperties();

    /**
     * Properties and settings related to service tickets.
     */
    @NestedConfigurationProperty
    private ServiceTicketProperties st = new ServiceTicketProperties();

    /**
     * Properties and settings related to ticket-granting tickets.
     */
    @NestedConfigurationProperty
    private TicketGrantingTicketProperties tgt = new TicketGrantingTicketProperties();

    public TicketProperties() {
        this.crypto.setEnabled(false);
    }
}

我们只看registry这个属性配置,其他的都是用的到的配置,有需要的自己去源码里面看看就好了,我们进到TicketRegistryProperties这个类里面看到它的属性就是对应官网所提供的存储方式,我们再找到redis 属性,进入到RedisTicketRegistryProperties这个类里面,它继承了一个BaseRedisProperties,看看它爹,里面都是提供了关于redis 的配置

再进到官网https://apereo.github.io/cas/5.3.x/installation/Configuration-Properties-Common.html#redis-configuration,有关redis 的属性配置

# ${configurationKey}.redis.host=localhost
# ${configurationKey}.redis.database=0
# ${configurationKey}.redis.port=6380
# ${configurationKey}.redis.password=
# ${configurationKey}.redis.timeout=2000
# ${configurationKey}.redis.useSsl=false
# ${configurationKey}.redis.usePool=true

# ${configurationKey}.redis.pool.max-active=20
# ${configurationKey}.redis.pool.maxIdle=8
# ${configurationKey}.redis.pool.minIdle=0
# ${configurationKey}.redis.pool.maxActive=8
# ${configurationKey}.redis.pool.maxWait=-1
# ${configurationKey}.redis.pool.numTestsPerEvictionRun=0
# ${configurationKey}.redis.pool.softMinEvictableIdleTimeMillis=0
# ${configurationKey}.redis.pool.minEvictableIdleTimeMillis=0
# ${configurationKey}.redis.pool.lifo=true
# ${configurationKey}.redis.pool.fairness=false

# ${configurationKey}.redis.pool.testOnCreate=false
# ${configurationKey}.redis.pool.testOnBorrow=false
# ${configurationKey}.redis.pool.testOnReturn=false
# ${configurationKey}.redis.pool.testWhileIdle=false

# ${configurationKey}.redis.sentinel.master=mymaster
# ${configurationKey}.redis.sentinel.node[0]=localhost:26377
# ${configurationKey}.redis.sentinel.node[1]=localhost:26378
# ${configurationKey}.redis.sentinel.node[2]=localhost:26379

接下来配置试试,简单配置一下,其他的根据需求配置

cas.ticket.registry.redis.host=localhost
cas.ticket.registry.redis.database=0
cas.ticket.registry.redis.port=6380
cas.ticket.registry.redis.password=123456
cas.ticket.registry.redis.timeout=20000
cas.ticket.registry.redis.useSsl=false
cas.ticket.registry.redis.usePool=false

打开http://localhost:8080/cas进行登陆,登陆完成查看redis 会发现存在

完毕

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章