在 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 变量?

没有 OIDC 的 OAuth2.0(普通 OAuth2.0)

刷新刷新令牌