在 RefreshTokens 的 OAuth2 AuthorizationServer java 实现中使用哪个存储
Posted
技术标签:
【中文标题】在 RefreshTokens 的 OAuth2 AuthorizationServer java 实现中使用哪个存储【英文标题】:Which storage to use in OAuth2 AuthorizationServer java implementation for RefreshTokens 【发布时间】:2018-03-01 10:28:25 【问题描述】:哪些存储可用于存储 RefreshToken(TTL=30 分钟)? 此存储必须由用 java 编写的 OAuth2 授权服务器的多个实例使用。
可能的选项是:
-
Hazelcast IMDG(用 Java 编写)
Postgres(用 C/C++ 编写)
Redis(用 C 编写)
Memcached(用 C 编写)
MongoDB(用 C 语言编写?)
兵马俑(用 Java 编写)
Infinispan(用 Java 编写)
这些刷新令牌不需要 Postgres 提供的强大事务一致性和备份能力。
需要的功能:
-
高可用性模式
存储简单数据,即 JSON 对象
行的 TTL
刷新令牌时延迟最小的高性能
精简 API 以从管理 UI 访问存储以进行管理
Hazelcast 是一个不错的候选者,但据我所知,它没有足够的 UI 用于数据管理,即用于 RefreshToken 撤销。 Postgres 提供 pgadmin 来访问存储的数据。
那么在这种情况下您更愿意使用哪一个?
【问题讨论】:
【参考方案1】:我们选择了 Hazelcast IMDG。高性能且无持久性
【讨论】:
以上是关于在 RefreshTokens 的 OAuth2 AuthorizationServer java 实现中使用哪个存储的主要内容,如果未能解决你的问题,请参考以下文章
Spring Security OAuth2 accessToken
Oauth2/Openid 连接。如何撤销未知的访问/刷新令牌
在 Spring Cloud Gateway 的 oauth2 客户端流中禁用重定向到 oauth2/authorization/registrationId
如何在 spring oauth2 OAuth2AccessToken 请求上设置代理或如何覆盖 OAuth2AccessTokenSupport restTemplate 变量?