2015-11-17 19 views
5

Tôi muốn triển khai REST API của mình trên môi trường nhóm. Để làm được điều đó, tôi cần lưu trữ mã thông báo OAuth 2.0 của mình trong cửa hàng Token được chia sẻ. Hiện tại tôi đang sử dụng InMemoryTokenStore của Spring Security, không thể chia sẻ trên cụm nhiều nút. Tôi đang lên kế hoạch để lưu trữ các thẻ bằng Redis.Redis Token Store

Tôi thấy rằng bản phát hành mới nhất của Spring-Security OAuth nghĩa là 2.8.0 cũng cung cấp RedisTokenStore. Tôi có một số nghi ngờ về việc này:

  1. Cần thay đổi gì để sử dụng RedisTokenStore trong cấu hình xml bảo mật mùa xuân hiện tại. Hiện tại tôi đang sử dụng InMemoryTokenStore.

  2. Cách làm cho RedisTokenStore có thể chia sẻ với tất cả các nút trong cụm.

  3. Tôi có thể sử dụng cụm Redis để lưu trữ mã thông báo, trong trường hợp có Làm thế nào?

Trả lời

7

Về câu hỏi đầu tiên:

Thứ nhất, cung cấp cho bạn mùa xuân-an ninh xml dụ về redis mã thông báo cửa hàng để tham khảo

<!--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> 

Thứ hai, bạn cần thêm redis dữ liệu mùa xuân và jedis jar vào của bạn dự án, tôi sử dụng gradle, thêm các mục trong các phụ thuộc như:

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

Giới thiệu về nhiệm vụ sencond ion:

Nếu tất cả các nút của một cụm sử dụng một máy chủ hoặc cụm lại, mã thông báo truy cập của bạn sẽ chia sẻ giữa tất cả các nút. Bạn có thể kiểm tra dữ liệu db redis của bạn và theo dõi quá trình truy cập để xác minh điều này. Vì vậy, bạn không lo lắng về nó.