基本身份验证(Basic authentication)
摘要
提供有关红帽构建的 Quarkus 文档的反馈 复制链接链接已复制到粘贴板!
要报告错误或改进文档,请登录到 Red Hat JIRA 帐户并提交问题。如果您没有 Red Hat Jira 帐户,则会提示您创建一个帐户。
流程
- 单击以下链接 以创建 ticket。
- 在 Summary 中输入问题的简短描述。
- 在 Description 中提供问题或功能增强的详细描述。包括一个指向文档中问题的 URL。
- 点 Submit 创建问题,并将问题路由到适当的文档团队。
使开源包含更多 复制链接链接已复制到粘贴板!
红帽致力于替换我们的代码、文档和 Web 属性中有问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
第 1 章 基本身份验证(Basic authentication) 复制链接链接已复制到粘贴板!
HTTP 基本身份验证是强制实施对 Web 资源的访问控制的最少资源需求技术之一。您可以使用 HTTP 基本身份验证保护 Quarkus 应用程序端点。Quarkus 包含用于基本身份验证的内置身份验证机制。
基本身份验证使用 HTTP 标头中的字段,不依赖于 HTTP cookie、会话标识符或登录页面。
1.1. 授权标头 复制链接链接已复制到粘贴板!
HTTP 用户代理(如 Web 浏览器)使用 Authorization 标头在各个 HTTP 请求中提供用户名和密码。标头指定为 Authorization: Basic <credentials& gt;,其中凭证是用户 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。security.users.embedded.enabled=true
security.users.embedded.enabled=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以配置所需的用户凭证、用户名、secret 和角色。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关您可以配置所需用户凭证的其他方法的详情,请参考 Quarkus "安全测试"指南中的 配置用户信息 部分。
重要在
application.properties文件中配置用户名、secret 和角色仅适用于测试场景。对于保护生产应用的安全,使用数据库存储此信息至关重要。
2.3. 后续步骤 复制链接链接已复制到粘贴板!
如需了解如何配置基本身份验证和 Jakarta Persistence (使用基本身份验证和 Jakarta Persistence)中存储用户凭证的信息,请参阅 使用基本身份验证和 Jakarta Persistence 指南来配置基本身份验证。