基本身份验证(Basic authentication)
摘要
向红帽构建的 Quarkus 文档提供反馈 复制链接链接已复制到粘贴板!
要报告错误或改进文档,请登录您的红帽 JIRA 帐户并提交问题。如果您没有红帽 JIRA 帐户,系统会提示您创建一个帐户。
流程
- 单击以下链接 来创建 ticket。
- 在 Summary 中输入有关此问题的简单描述。
- 提供有关 描述 中问题或增强功能的详细描述。包括一个 URL,以在文档中发生问题。
- 点 Submit 创建问题并将其路由到适当的文档团队。
第 1 章 基本身份验证(Basic authentication) 复制链接链接已复制到粘贴板!
HTTP 基本身份验证是强制对 Web 资源的访问控制的最低资源要求技术之一。您可以使用 HTTP 基本身份验证保护 Quarkus 应用程序端点。Quarkus 包含用于基本身份验证的内置身份验证机制。
基本身份验证使用 HTTP 标头中的字段,不依赖于 HTTP cookie、会话标识符或登录页面。
1.1. 授权标头 复制链接链接已复制到粘贴板!
HTTP 用户代理(如 Web 浏览器)使用 Authorization 标头来在每个 HTTP 请求中提供用户名和密码。标头指定为 Authorization: Basic <credentials& gt;,其中 credentials 是用户 ID 和密码的 Base64 编码,用冒号加入。
Example:
如果用户名是 alice,密码是 secret,HTTP 授权标头将为 Authorization: Basic QWxjZTpzZWNyZXQ=,其中 QWxjZTpzZWNyZXQ= 是 alice :secret 字符串的 Base64 编码表示。
基本身份验证机制不会为传输的凭据提供机密保护。在传输过程中,凭证使用 Base64 进行编码,且不会以任何方式加密或散列。因此,为了提供机密性,请使用 HTTPS 的基本身份验证。
基本身份验证是一个精心指定的、简单挑战和响应方案,所有 Web 浏览器和大多数 Web 服务器都理解。
1.2. 使用基本身份验证的限制 复制链接链接已复制到粘贴板!
下表概述了使用 HTTP 基本身份验证来保护 Quarkus 应用程序的一些限制:
| 限制 | 描述 |
|---|---|
| 凭证以纯文本形式发送 | 通过基本身份验证使用 HTTPS 以避免公开凭据。如果负载均衡器终止 HTTPS,因为请求通过 HTTP 转发到 Quarkus,则公开凭证的风险会增加。另外,在多跃点部署中,如果在客户端和第一个 Quarkus 端点之间使用了 HTTPS,则可以公开凭证,并且凭据通过 HTTP 传播到下一个 Quarkus 端点。 |
| 凭证会随每个请求发送 | 在基本身份验证中,每个请求都必须发送用户名和密码,增加公开凭证的风险。 |
| 应用程序复杂性增加 | Quarkus 应用程序必须验证安全管理用户名、密码和角色。但是,这个过程会对应用程序造成显著复杂性。根据用例,将用户名、密码和角色管理委托给特殊服务的其他身份验证机制可能更为安全。 |
1.3. 在 Quarkus 中实施基本身份验证 复制链接链接已复制到粘贴板!
有关如何使用基本身份验证保护 Quarkus 应用程序的更多信息,请参阅以下资源:
1.4. 基于角色的访问控制 复制链接链接已复制到粘贴板!
红帽构建的 Quarkus 还包括内置的安全性,以允许基于常见安全注解 @RolesAllowed,@DenyAll,@PermitAll on REST 端点和 CDI Bean 进行基于角色的访问控制(RBAC)。如需更多信息,请参阅 Web 端点指南的 Quarkus 授权 指南。
1.5. 参考 复制链接链接已复制到粘贴板!
第 2 章 启用基本身份验证 复制链接链接已复制到粘贴板!
为您的 Quarkus 项目启用 基本身份验证,并允许用户使用用户名和密码进行身份验证。
2.1. 先决条件 复制链接链接已复制到粘贴板!
您至少安装了一个扩展,它根据用户名和密码提供
IdentityProvider。例如:
以下流程概述了如何使用 elytron-security-properties-file 扩展为应用程序启用基本身份验证。
2.2. 流程 复制链接链接已复制到粘贴板!
在
application.properties文件中,将quarkus.http.auth.basic属性设置为true。quarkus.http.auth.basic=true
quarkus.http.auth.basic=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 在非生产环境中,仅在非生产环境中测试应用程序中的 Quarkus 安全性:
要为嵌入式域启用身份验证,请将
quarkus.security.users.embedded.enabled属性设置为true。quarkus.security.users.embedded.enabled=true
quarkus.security.users.embedded.enabled=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以配置所需的用户凭证、用户名、secret 和角色。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关可用于配置所需用户凭证的其他方法的详情,请参考 Quarkus "Security Testing" 指南中的 配置用户信息 部分。
重要在
application.properties文件中配置用户名、secret 和角色只适用于测试场景。对于保护生产应用,使用数据库存储此信息至关重要。
2.3. 后续步骤 复制链接链接已复制到粘贴板!
如需了解如何配置基本身份验证和 Jakarta Persistence (使用基本身份验证和 Jakarta Persistence)中存储用户凭证的信息,请参阅 使用基本身份验证和 Jakarta Persistence 指南来配置基本身份验证。