基本身份验证(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
Copy to clipboardCopiedquarkus.http.auth.basic=true
可选: 在非生产环境中,仅在非生产环境中测试应用程序中的 Quarkus 安全性:
要为嵌入式域启用身份验证,请将
quarkus.security.users.embedded.enabled
属性设置为true
。quarkus.security.users.embedded.enabled=true
Copy to clipboardCopiedquarkus.security.users.embedded.enabled=true
您还可以配置所需的用户凭证、用户名、secret 和角色。例如:
quarkus.http.auth.basic=true quarkus.security.users.embedded.enabled=true quarkus.security.users.embedded.plain-text=true quarkus.security.users.embedded.users.alice=alice 1 quarkus.security.users.embedded.users.bob=bob 2 quarkus.security.users.embedded.roles.alice=admin 3 quarkus.security.users.embedded.roles.bob=user 4
Copy to clipboardCopiedquarkus.http.auth.basic=true quarkus.security.users.embedded.enabled=true quarkus.security.users.embedded.plain-text=true quarkus.security.users.embedded.users.alice=alice 1 quarkus.security.users.embedded.users.bob=bob 2 quarkus.security.users.embedded.roles.alice=admin 3 quarkus.security.users.embedded.roles.bob=user 4
有关可用于配置所需用户凭证的其他方法的详情,请参考 Quarkus "Security Testing" 指南中的 配置用户信息 部分。
重要在
application.properties
文件中配置用户名、secret 和角色只适用于测试场景。对于保护生产应用,使用数据库存储此信息至关重要。
2.3. 后续步骤
如需了解如何配置基本身份验证和 Jakarta Persistence (使用基本身份验证和 Jakarta Persistence)中存储用户凭证的信息,请参阅 使用基本身份验证和 Jakarta Persistence 指南来配置基本身份验证。