2.4. 在 OpenID Connect、SmallRye JWT 和 OAuth2 身份验证机制之间进行选择


使用以下信息来选择适当的令牌身份验证机制来保护 Quarkus 应用程序。

身份验证机制用例列表

  • Quarkus-oidc 需要 OpenID Connect 供应商,如 Keycloak,它可以验证 bearer 令牌或使用授权代码流验证最终用户。在这两种情况下,quarkus-oidc 需要连接到指定的 OpenID Connect 供应商。
  • 如果用户身份验证需要授权代码流,或者您需要支持多个租户,请使用 quarkus-oidc。Quarkus-oidc 也可以使用授权代码流和 Bearer 访问令牌来请求用户信息。
  • 如果需要验证 bearer 令牌,请使用 quarkus-oidc 或 quarkus-smallrye-jwt。
  • 如果您的 bearer 令牌采用 JSON Web 令牌(JWT)格式,您可以使用前面的列表中的任何扩展。quarkus-oidc 和 quarkus-smallrye-jwt 支持在 OpenID Connect 提供程序轮转密钥时刷新 JsonWebKey (JWK)设置。因此,如果必须避免远程令牌内省,或者供应商不支持,请使用 quarkus-oidc 或 quarkus-smallrye-jwt 来验证 JWT 令牌。
  • 要远程内省 JWT 令牌,您可以使用 quarkus-oidc 通过远程内省验证不透明或二进制令牌。quarkus-smallrye-jwt 不支持对不透明或 JWT 令牌的远程内省,而是依赖于通常从 OpenID Connect 供应商检索的本地可用密钥。
  • Quarkus-oidc 和 quarkus-smallrye-jwt 支持 JWT 和不透明令牌注入端点代码中。注入的 JWT 令牌提供有关用户的更多信息。所有扩展都可以将令牌作为 主体 注入。
  • quarkus-smallrye-jwt 支持比 quarkus-oidc 更多的键格式。Quarkus-oidc 只使用属于 JWK 集的 JWK 格式的密钥,而 quarkus-smallrye-jwt 支持 PEM 密钥。
  • Quarkus-smallrye-jwt 处理本地签名、内部签名和加密令牌。相反,虽然 quarkus-oidc 也可以验证这些令牌,但它将其视为不透明令牌,并通过远程内省进行验证。
注意

架构考虑因素导致您的决定使用不透明或 JSON Web 令牌(JWT)令牌格式。不透明令牌通常比 JWT 令牌更短,但需要大多数令牌关联状态才能在提供程序数据库中维护。不透明令牌是有效的数据库指针。

JWT 令牌比不透明令牌要长。然而,提供商通过将其存储为令牌声明并签名或加密,从而有效地将大多数令牌关联状态委派给客户端。

表 2.2. 令牌身份验证机制比较
所需功能身份验证机制
 

quarkus-oidc

quarkus-smallrye-jwt

bearer JWT 验证

本地验证或内省

本地验证

bearer opaque 令牌验证

内省

否

刷新 JsonWebKey 设置,以验证 JWT 令牌

是

是

将令牌表示为 Principal

是

是

将 JWT 注入为 MP JWT

是

是

授权代码流

是

否

多租户

是

否

用户信息支持

是

否

PEM 密钥格式支持

否

是

secretKey 支持

否

JSON Web 密钥(JWK)格式

内部签名和加密令牌

内省

本地验证

自定义令牌验证

否

带有注入的 JWT 解析器

JWT 作为 Cookie 支持

否

是

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部