基本身份验证(Basic authentication)


Red Hat build of Quarkus 3.20

Red Hat Customer Content Services

摘要

本指南引进了 HTTP 基本身份验证,作为保护 Quarkus 应用程序端点的最小资源技术。它详细介绍了使用 Authorization 标头传输 Base64 编码的凭证,并突出显示 HTTPS 在传输过程中保护这些凭证的需求。它讨论了一些限制,如凭证缺少加密、需要为每个请求发送凭据,以及管理应用中凭据的复杂性。另外还提供了实施指导和对其他安全资源的引用,包括启用基本身份验证和基于角色的访问控制(RBAC)。

向红帽构建的 Quarkus 文档提供反馈

要报告错误或改进文档,请登录您的红帽 JIRA 帐户并提交问题。如果您没有红帽 JIRA 帐户,系统会提示您创建一个帐户。

流程

  1. 单击以下链接 来创建 ticket
  2. Summary 中输入有关此问题的简单描述。
  3. 描述中提供问题或增强功能的详细描述。请包括有问题的文档 URL。
  4. 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 应用程序的一些限制:

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

凭证以纯文本形式发送

通过基本身份验证使用 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. 先决条件

以下流程概述了如何使用 elytron-security-properties-file 扩展为应用程序启用基本身份验证。

2.2. 流程

  1. application.properties 文件中,将 quarkus.http.auth.basic 属性设置为 true

    quarkus.http.auth.basic=true
    Copy to clipboard
  2. 可选: 在非生产环境中,仅在非生产环境中测试应用程序中的 Quarkus 安全性:

    1. 要为嵌入式域启用身份验证,请将 quarkus.security.users.embedded.enabled 属性设置为 true

      quarkus.security.users.embedded.enabled=true
      Copy to clipboard
    2. 您还可以配置所需的用户凭证、用户名、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 clipboard
      1 3
      用户 alice 将其密码设为 alice,并且 admin 作为其角色。
      2 4
      用户 bobbob 用作其密码,并将 user 用作其角色。

      有关可用于配置所需用户凭证的其他方法的详情,请参考 Quarkus "Security Testing" 指南中的 配置用户信息 部分。

      重要

      application.properties 文件中配置用户名、secret 和角色只适用于测试场景。对于保护生产应用,使用数据库存储此信息至关重要。

2.3. 后续步骤

如需了解如何配置基本身份验证和 Jakarta Persistence (使用基本身份验证和 Jakarta Persistence)中存储用户凭证的信息,请参阅 使用基本身份验证和 Jakarta Persistence 指南来配置基本身份验证

2.4. 参考

法律通告

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat, Inc.