编辑此页面

Quarkus Security 架构

Quarkus 安全架构提供了几种内置的认证机制,并且高度可定制。Quarkus 中用于保护 HTTP 应用程序的主要机制是 HttpAuthenticationMechanism 接口。

Quarkus 安全架构概述

当客户端发送 HTTP 请求时,Quarkus 安全架构通过与几个内置的核心组件交互来协调安全认证和授权,这些组件包括 HttpAuthenticationMechanismIdentityProviderSecurityIdentityAugmentor

顺序安全验证过程会导致三种结果之一:

  • HTTP 请求已通过身份验证和授权,并允许访问 Quarkus 应用程序。

  • HTTP 请求身份验证失败,请求者会收到特定于认证机制的挑战,例如 401 错误、重定向到重新认证的 URL 或其他自定义的身份验证挑战响应。有关挑战响应的实际示例,请参阅 Quarkus 的 安全提示和技巧指南。

  • HTTP 请求授权失败,请求者被拒绝访问 Quarkus 应用程序。

下图展示了 Quarkus 安全架构的详细处理流程。

Quarkus Security architecture process flow
图 1. Quarkus 安全架构和处理流程

Quarkus 安全架构的核心组件

HttpAuthenticationMechanism

Quarkus 安全架构使用 HttpAuthenticationMechanism 从 HTTP 请求中提取身份验证凭据,并将其委托给 IdentityProvider 以将凭据转换为 SecurityIdentity。例如,凭据可以来自 Authorization 头部、客户端 HTTPS 证书或 cookie。

当 Quarkus 安全架构拒绝身份验证请求时,HttpAuthenticationMechanism 会向客户端返回一个身份验证挑战。挑战的类型取决于身份验证机制。例如,使用 OIDC OpenID Connect (OIDC) 授权码流程机制时,会生成一个重定向 URL,并将客户端重定向到 OpenID Connect 提供商进行身份验证。

IdentityProvider

IdentityProvider 验证身份验证凭据,并将其映射到 SecurityIdentity,其中包含用户名、角色、原始身份验证凭据和其他属性。

您可以为每个已认证的资源注入 SecurityIdentity 实例以获取已认证的身份信息。

在其他上下文中,可能存在相同信息或部分信息的其他并行表示,例如 Jakarta REST 的 SecurityContext 或 JSON Web Tokens (JWT) 的 JsonWebToken

有关更多信息,请参阅 Quarkus 的 身份提供程序指南。

SecurityIdentityAugmentor

由于 Quarkus 安全架构是可定制的,您可以例如向 SecurityIdentity 添加授权角色,并注册一个或多个 SecurityAugmentor 实现并设置优先级。

已注册的 SecurityIdentityAugmentor 实例在安全身份验证过程的最后阶段被调用。有关更多信息,请参阅“安全提示和技巧”指南的 安全身份自定义 部分。

支持的认证机制

Quarkus 安全框架支持多种身份验证机制,这些机制也可以组合使用。一些支持的身份验证机制内置于 Quarkus 中,而另一些则需要您添加扩展。

要了解 Quarkus 中的安全身份验证以及支持的机制和协议,请参阅 Quarkus 的 Quarkus 中的身份验证机制指南。

主动身份验证

Quarkus 默认启用主动身份验证。如果传入请求带有凭据,则请求始终会经过身份验证,即使目标页面不需要身份验证。有关更多信息,请参阅 Quarkus 的 主动身份验证指南。

Quarkus 安全自定义

Quarkus 安全架构是可定制的。您可以自定义 Quarkus 的以下核心安全组件:

  • HttpAuthenticationMechanism

  • IdentityProvider

  • SecurityidentityAugmentor

有关自定义 Quarkus 安全的更多信息,包括响应式安全以及如何注册安全提供程序,请参阅 Quarkus 的 安全提示和技巧指南。

相关内容