编辑此页面

基本身份验证

HTTP 基本身份验证是一种资源需求最低的技术,用于强制执行对 Web 资源的访问控制。 您可以使用 HTTP 基本身份验证来保护您的 Quarkus 应用程序端点。 Quarkus 包括用于基本身份验证的内置身份验证机制。

基本身份验证使用 HTTP 标头中的字段,不依赖于 HTTP Cookie、会话标识符或登录页面。

授权标头

HTTP 用户代理(如 Web 浏览器)使用 Authorization 标头在每个 HTTP 请求中提供用户名和密码。 标头指定为 Authorization: Basic <credentials>,其中 credentials 是用户 ID 和密码的 Base64 编码,并以冒号连接。

示例

如果用户名是 Alice,密码是 secret,则 HTTP 授权标头将是 Authorization: Basic QWxjZTpzZWNyZXQ=,其中 QWxjZTpzZWNyZXQ=Alice:secret 字符串的 Base64 编码表示形式。

基本身份验证机制不为传输的凭据提供机密性保护。 凭据在传输过程中仅使用 Base64 编码,而不是以任何方式加密或哈希。 因此,要提供机密性,请将基本身份验证与 HTTPS 一起使用。

基本身份验证是一种规范明确、简单的质询和响应方案,所有 Web 浏览器和大多数 Web 服务器都理解。

使用基本身份验证的限制

下表概述了使用 HTTP 基本身份验证来保护 Quarkus 应用程序的一些限制

表 1. HTTP 基本身份验证的限制
限制 描述

凭据以纯文本形式发送

将 HTTPS 与基本身份验证结合使用,以避免暴露凭据。 如果负载均衡器终止 HTTPS,则暴露凭据的风险会增加,因为请求会通过 HTTP 转发到 Quarkus。 此外,在多跳部署中,如果仅在客户端和第一个 Quarkus 端点之间使用 HTTPS,并且凭据通过 HTTP 传播到下一个 Quarkus 端点,则凭据可能会暴露。

凭据随每个请求一起发送

在基本身份验证中,用户名和密码必须随每个请求一起发送,从而增加了暴露凭据的风险。

应用程序复杂性增加

Quarkus 应用程序必须验证用户名、密码和角色是否得到安全管理。 但是,此过程可能会给应用程序带来很大的复杂性。 根据用例,其他将用户名、密码和角色管理委托给专门服务的身份验证机制可能更安全。

在 Quarkus 中实现基本身份验证

有关如何使用基本身份验证保护 Quarkus 应用程序的更多信息,请参阅以下资源

基于角色的访问控制

Quarkus 还包括内置安全性,允许基于 REST 端点和 CDI Bean 上的通用安全注解 @RolesAllowed@DenyAll@PermitAll 进行基于角色的访问控制 (RBAC)。 有关更多信息,请参阅 Quarkus Web 端点授权 指南。

相关内容