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 會發現存在

完畢

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