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


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

身份验证机制用例列表

  • Quarkus-oidc 需要 OpenID Connect 供应商,如 Keycloak,它可以验证 bearer 令牌或使用授权代码流验证最终用户。在这两种情况下,quarkus-oidc 需要连接到指定的 OpenID Connect 供应商。
  • 如果用户身份验证需要授权代码流,或者您需要支持多个租户,请使用 quarkus-oidcQuarkus-oidc 也可以使用授权代码流和 Bearer 访问令牌来请求用户信息。
  • 如果需要验证 bearer 令牌,请使用 quarkus-oidcquarkus-smallrye-jwt
  • 如果您的 bearer 令牌采用 JSON Web 令牌(JWT)格式,您可以使用前面的列表中的任何扩展。quarkus-oidcquarkus-smallrye-jwt 支持在 OpenID Connect 提供程序轮转密钥时刷新 JsonWebKey (JWK)设置。因此,如果必须避免远程令牌内省,或者供应商不支持,请使用 quarkus-oidcquarkus-smallrye-jwt 来验证 JWT 令牌。
  • 要远程内省 JWT 令牌,您可以使用 quarkus-oidc 通过远程内省验证不透明或二进制令牌。quarkus-smallrye-jwt 不支持对不透明或 JWT 令牌的远程内省,而是依赖于通常从 OpenID Connect 供应商检索的本地可用密钥。
  • Quarkus-oidcquarkus-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 令牌比不透明令牌要长。然而,提供商通过将其存储为令牌声明并签名或加密,从而有效地将大多数令牌关联状态委派给客户端。

Expand
表 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 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

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

Theme

© 2025 Red Hat