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 令牌提供有关用户的更多信息。所有扩展都可以将令牌注入为 Principal
  • 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 不透明令牌验证

内省

刷新 JsonWebKey 设置为验证 JWT 令牌

将令牌表示为 Principal

将 JWT 注入 MP JWT

授权代码流

多租户

用户信息支持

PEM 密钥格式支持

secretKey 支持

JSON Web 密钥(JWK)格式

内部签名和加密或加密令牌

内省

本地验证

自定义令牌验证

使用注入的 JWT 解析器

JWT 作为 Cookie 支持

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.