了解基本 WWW 身份验证中“领域”的目的

Posted

技术标签:

【中文标题】了解基本 WWW 身份验证中“领域”的目的【英文标题】:Understanding the purpose of "realm" in Basic WWW Authentication 【发布时间】:2014-04-19 15:51:38 【问题描述】:

我很难理解用于基本 HTTP 身份验证的 WWW-Authenticate 标头中“领域”值的用途。

This question 询问“领域”值是什么 - 答案似乎很简单。 “领域”有点像命名空间,表示受保护资源的集合。

好的,所以我明白了抽象的概念。但在实践中,尤其是从 HTTP 客户端的角度来看,“领域”实际上有什么帮助?

通过 HTTP 进行身份验证时,基本工作流程似乎是:

(1) 服务器以WWW-Authenticate 的形式发出质询 标题

(2) 客户端以 Authorization 标头响应,以及 包含用户名和密码的 base64 编码字符串。

(3) 客户端现在被授予访问权限(如果凭据错误,则拒绝访问)

那么在哪里客户端应该关心服务器发送的“领域”值?

据我了解,如果客户端想要再次访问受保护的资源,唯一需要做的就是再次发送“授权”标头。那么……再一次,“领域”是如何参与到这一切中的?

为了清楚起见...我从概念上理解什么是“领域”...我只是不明白 HTTP 客户端在实践中是如何使用它的。

【问题讨论】:

【参考方案1】:

我只是不明白 HTTP 客户端在实践中是如何使用它的。

当领域保持不变时,浏览器不会要求用户提供凭据。因此,如果您登录到提供特定领域值的http://example.com/ApplicationA,那么使用相同领域的http://example.com/ApplicationB 可以重用用户为应用程序 A 输入的凭据,因为它们的“规范根 URL”是相同的(http://example.com),所以浏览器不必再次弹出凭据表单。

不过,浏览器的实现方式似乎有所不同,这取决于 URI 的哪些部分发生了变化,即使领域和规范根 URL 保持不变,一些再次要求提供凭据。

【讨论】:

但是服务器不会在每次响应时都发送领域,对吧?仅当用户未通过身份验证时。

以上是关于了解基本 WWW 身份验证中“领域”的目的的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 请求未经客户端身份验证方案“匿名”授权。从服务器收到的身份验证标头是“基本领域”

DropWizard 身份验证领域

了解 401 的基本身份验证

后续请求的基本 HTTP 身份验证

从 Spring Boot 中的基本身份验证中删除 WWW-authenticate 标头

PHP cURL - 具有基本身份验证的HTTP GET 403