2.3. 其他支持的身份验证机制
Quarkus 安全还通过扩展支持以下身份验证机制:
2.3.1. OpenID Connect 身份验证
OpenID Connect (OIDC)是一个身份层,可在 OAuth 2.0 协议之上工作。OIDC 允许客户端应用程序根据 OIDC 供应商执行的身份验证验证用户身份,并检索有关该用户的基本信息。
Quarkus quarkus-oidc
扩展提供了一个被动、可互操作的、启用了多租户的 OIDC 适配器,它支持 Bearer 令牌和授权代码流身份验证机制。Bearer 令牌身份验证机制从 HTTP Authorization 标头中提取令牌。
授权代码流机制将用户重定向到 OIDC 供应商,以验证用户身份。用户重定向到 Quarkus 后,机制通过交换为 ID、访问和刷新令牌授予的提供代码,从而完成身份验证过程。
您可以使用可刷新的 JSON Web 密钥(JWK)设置或远程内省它们,以验证 ID 和访问 JSON Web Token (JWT)令牌。但是,不透明(也称为二进制令牌)只能远程内省。
使用 Quarkus OIDC 扩展,Bearer 令牌和授权代码流身份验证机制都使用 SmallRye JWT 身份验证来将 JWT 令牌表示为 MicroProfile JWT org.eclipse.microprofile.jwt.JsonWebToken
。
2.3.1.1. 用于 OIDC 身份验证的其他 Quarkus 资源
有关可用于保护 Quarkus 应用程序的 OIDC 身份验证和授权方法的更多信息,请参阅以下资源:
OIDC 主题 | Quarkus 信息资源 |
---|---|
bearer 令牌身份验证机制 | |
授权代码流身份验证机制 | |
OIDC 和 SAML 身份代理 | |
多个租户,可以支持 Bearer 令牌身份验证或授权代码流机制 | |
使用常用的 OpenID Connect 供应商保护 Quarkus | |
使用 Keycloak 集中管理授权 |
要在运行时启用 Quarkus OIDC 扩展,请在构建时设置 quarkus.oidc.tenant-enabled=false
。然后,使用系统属性在运行时重新启用它。
有关在多租户 OIDC 部署中管理单个租户配置的更多信息,请参阅"使用 OpenID Connect (OIDC)多租户"指南中的 禁用 租户配置部分。
2.3.1.2. OpenID Connect 客户端和过滤器
quarkus-oidc-client
扩展为从支持以下令牌授予的 OpenID Connect 和 OAuth2 供应商中获取和刷新访问令牌提供 OidcClient
:
-
client-credentials
-
password
-
refresh_token
quarkus-resteasy-client-oidc-filter
扩展需要 quarkus-oidc-client
扩展。它提供 JAX-RS RESTful Web Services OidcClientRequestFilter
,它将 OidcClient
获取的访问令牌设置为 HTTP Authorization
标头的 Bearer
方案值。此过滤器可以注册到注入当前 Quarkus 端点中的 MicroProfile REST 客户端实施,但它与此服务端点的身份验证要求无关。例如,它可以是公共端点,也可以使用 mTLS 进行保护。
在这种情况下,您不需要使用 Quarkus OpenID Connect 适配器来保护 Quarkus 端点。
quarkus-resteasy-client-oidc-token-propagation
扩展需要 quarkus-oidc
扩展。它提供 Jakarta REST TokenCredentialRequestFilter
,它将 OpenID Connect Bearer 令牌或 Authorization Code Flow 访问令牌设置为 HTTP Authorization
标头的 Bearer
scheme 值。此过滤器可以注册到注入当前 Quarkus 端点中的 MicroProfile REST 客户端实现,该端点必须使用 Quarkus OIDC 适配器进行保护。此过滤器可以将访问令牌传播到下游服务。
如需更多信息,请参阅 OpenID Connect 客户端和令牌传播快速启动 和 OpenID Connect (OIDC)和 OAuth2 客户端和过滤器参考指南。
2.3.2. smallrye JWT 身份验证
quarkus-smallrye-jwt
扩展提供 MicroProfile JSON Web Token (JWT) 2.1 实施,以及多个选项来验证已签名和加密的 JWT
令牌。它将它们表示为 org.eclipse.microprofile.jwt.JsonWebToken
。
quarkus-smallrye-jwt
是 quarkus-oidc
Bearer 令牌身份验证机制的替代选择,并使用 Privacy Enhanced Mail (PEM)密钥或可刷新的 JWK
密钥集来验证仅 JWT
令牌。quarkus-smallrye-jwt
还提供 JWT 生成 API,您可以使用它来轻松创建 经过签名
、内部
签名的,以及 加密的
JWT
令牌。
如需更多信息,请参阅使用 JWT RBAC 指南。