基本身份验证
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 应用程序的一些限制
限制 | 描述 |
---|---|
凭据以纯文本形式发送 |
将 HTTPS 与基本身份验证结合使用,以避免暴露凭据。 如果负载均衡器终止 HTTPS,则暴露凭据的风险会增加,因为请求会通过 HTTP 转发到 Quarkus。 此外,在多跳部署中,如果仅在客户端和第一个 Quarkus 端点之间使用 HTTPS,并且凭据通过 HTTP 传播到下一个 Quarkus 端点,则凭据可能会暴露。 |
凭据随每个请求一起发送 |
在基本身份验证中,用户名和密码必须随每个请求一起发送,从而增加了暴露凭据的风险。 |
应用程序复杂性增加 |
Quarkus 应用程序必须验证用户名、密码和角色是否得到安全管理。 但是,此过程可能会给应用程序带来很大的复杂性。 根据用例,其他将用户名、密码和角色管理委托给专门服务的身份验证机制可能更安全。 |
基于角色的访问控制
Quarkus 还包括内置安全性,允许基于 REST 端点和 CDI Bean 上的通用安全注解 @RolesAllowed
、@DenyAll
、@PermitAll
进行基于角色的访问控制 (RBAC)。 有关更多信息,请参阅 Quarkus Web 端点授权 指南。