351

我正在一个 php 站点上设置基本身份验证,并在 php 手册中找到了这个页面,显示了设置。标题中的“领域”是什么意思?

header('WWW-Authenticate: Basic realm="My Realm"');

是请求的页面页面吗?

4

3 回答 3

318

来自 RFC 1945 (HTTP/1.0)RFC 2617(HTTP/1.1 引用的 HTTP 身份验证)

所有发出质询的身份验证方案都需要领域属性(不区分大小写)。领域值(区分大小写)与被访问服务器的规范根 URL 相结合,定义了保护空间。这些领域允许将服务器上的受保护资源划分为一组保护空间,每个保护空间都有自己的身份验证方案和/或授权数据库。领域值是一个字符串,通常由源服务器分配,它可能具有特定于身份验证方案的附加语义。

简而言之,同一领域中的页面应该共享凭据。如果您的凭据适用于域为"My Realm"的页面,则应假定相同的用户名和密码组合适用于具有相同域的另一个页面。

于 2012-10-03T02:21:13.670 回答
125

一个领域可以被看作是一个区域(不是一个特定的页面,它可以是一组页面),凭证用于该区域;这也是浏览器弹出登录窗口时将显示的字符串,例如

请输入您的用户名和密码<realm name>

当领域更改时,如果浏览器没有该特定领域的凭据,它可能会显示另一个弹出窗口。

于 2012-10-03T02:25:50.100 回答
23

根据RFC 7235,该realm参数保留用于定义保护空间(需要凭据的页面或资源集),并且它被身份验证方案用于指示保护范围

有关更多详细信息,请参阅下面的引用(RFC 中没有突出显示):

2.2. 保护空间(境界)

“领域”身份验证参数保留供希望指示保护范围的身份验证方案使用

保护空间由正在访问的服务器的规范根 URI(有效请求 URI 的方案和权限组件)与领域值(如果存在)一起定义。 这些领域允许将服务器上的受保护资源划分为一组保护空间,每个保护空间都有自己的身份验证方案和/或授权数据库。 领域值是一个字符串,通常由源服务器分配,可以具有特定于身份验证方案的附加语义。请注意,响应可能具有相同的身份验证方案但具有不同领域的多个挑战。[...]


注 1: HTTP 身份验证的框架当前由RFC 7235定义,它更新了RFC 2617并使RFC 2616过时。

注 2:挑战realm不再总是需要该参数。

于 2016-02-11T12:47:37.677 回答