Java Redis令牌存储

Java Redis令牌存储,java,spring,oauth,Java,Spring,Oauth,我想在集群环境中部署RESTAPI。为此,我需要将OAuth 2.0令牌存储在共享令牌存储中。目前我正在使用SpringSecurity的InMemoryTokenStore,它不能在多节点集群上共享。我计划使用Redis存储代币 我发现SpringSecurityOAuth的最新版本,即2.8.0,也提供了RedistokStore。我对此有些怀疑: 在现有的SpringSecurityXML配置中使用RedistokeStore需要做哪些更改。目前我正在使用InMemoryTokenStor

我想在集群环境中部署RESTAPI。为此,我需要将OAuth 2.0令牌存储在共享令牌存储中。目前我正在使用SpringSecurity的InMemoryTokenStore,它不能在多节点集群上共享。我计划使用Redis存储代币

我发现SpringSecurityOAuth的最新版本,即2.8.0,也提供了RedistokStore。我对此有些怀疑:

  • 在现有的SpringSecurityXML配置中使用RedistokeStore需要做哪些更改。目前我正在使用InMemoryTokenStore

  • 如何使RedistokStore与群集中的所有节点共享

  • 如果可以,我可以使用Redis集群来存储令牌吗?如何

  • 关于第一个问题:

    首先,给出一个关于redis令牌存储的spring安全xml示例,供您参考

    <!--Use Redis Token Store-->
    <beans:bean id="tokenStore"
                class="org.springframework.security.oauth2.provider.token.store.redis.RedisTokenStore">
        <beans:constructor-arg name="connectionFactory" ref="redisConnectionFactory"/>
    </beans:bean>
    
    <!--create redis connection factory and set db 1-->
    <beans:bean id="redisConnectionFactory"
                class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
        <beans:property name="hostName" value="localhost"/>
        <beans:property name="port" value="6379"/>
        <beans:property name="password" value=""/>
        <beans:property name="database" value="1"/>
    </beans:bean>
    
    关于第二个问题:

    如果一个集群的所有节点都使用一个reids服务器或集群,那么您的访问令牌将在所有节点之间共享。您可以检查您的redis db数据,并跟踪访问过程以验证这一点。所以你不用担心

    ......
    compile 'org.springframework.data:spring-data-redis:1.6.2.RELEASE'
    compile 'redis.clients:jedis:2.8.0'
    ......