2.3. 其他支持的身份验证机制
Quarkus 安全还通过扩展支持以下身份验证机制:
2.3.1. OpenID Connect 身份验证 复制链接链接已复制到粘贴板!
OpenID Connect (OIDC)是一个在 OAuth 2.0 协议之上工作的身份层。OIDC 可让客户端应用程序根据 OIDC 供应商执行的身份验证来验证用户的身份,并检索有关该用户的基本信息。
Quarkus quarkus-oidc
扩展提供了一个被动、可互操作的、启用了多租户的 OIDC 适配器,它支持 Bearer 令牌和授权代码流身份验证机制。Bearer 令牌身份验证机制从 HTTP Authorization 标头中提取令牌。
Authorization Code 流机制将用户重定向到 OIDC 供应商,以验证用户的身份。用户重定向到 Quarkus 后,机制通过交换为 ID、访问和刷新令牌提供的代码来完成身份验证过程。
您可以使用可刷新的 JSON Web 密钥(JWK)集或内省来验证 ID 和访问 JSON Web 令牌(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
扩展为 OidcClient
提供 OidcClient,用于从支持以下令牌授予的 OpenID Connect 和 OAuth2 供应商中刷新访问令牌:
-
client-credentials
-
password
-
refresh_token
quarkus-oidc-client-filter
扩展需要 quarkus-oidc-client
扩展。它提供 JAX-RS RESTful Web Services OidcClientRequestFilter
,它将 OidcClient
获取的访问令牌设置为 HTTP Authorization
标头的 Bearer
scheme 值。此过滤器可以在注入当前 Quarkus 端点的 MicroProfile REST 客户端实现中注册,但它与此服务端点的身份验证要求无关。例如,它可以是一个公共端点,也可以使用 mTLS 进行保护。
在这种情况下,您不需要使用 Quarkus OpenID Connect 适配器来保护 Quarkus 端点。
quarkus-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. 小的 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)密钥或 refreshable JWK
密钥集仅验证 JWT
令牌。Quarkus-smallrye-jwt
还提供 JWT 生成 API,可用于轻松创建 签名的
、内部签名和加密
的 JWT
令牌。
如需更多信息,请参阅使用 JWT RBAC 指南。