基本认证中的“领域”是什么


307

我在PHP网站设置基本身份验证,发现页面上显示出来的一套PHP手册。标头中的“领域”是什么意思?

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

是请求的页面页面吗?

Answers:


284

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

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

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


7
某些服务器在身份验证方面没有提供解决方案。
orkoden

5
使用IIS时,我为不同的虚拟文件夹(在同一站点下)配置了不同的领域。但是我不确定这是否正确。但这似乎对我有用。当我访问另一个领域的虚拟文件夹时,确实收到提示输入凭据的提示。
smwikipedia 2014年

1
注意:RFC 7235
Hawkeye Parker,

117

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

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

当领域发生变化时,如果浏览器没有该特定领域的凭据,则浏览器可能会显示另一个弹出窗口。


如何在领域下对页面进行分组?
2015年

@Green .htaccess按层次结构进行,因此可以将同一目录下的所有内容都赋予同一领域。
杰克

1
@Jack,我天真地认为带有给定领域的带有身份验证标头的所有页面都在该领域中,并且没有其他规则。我错了吗?

15

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

有关更多详细信息,请参见下面的引号(RFC中没有重点显示):

2.2。保护空间(领域)

“领域”认证参数保留给希望表示保护范围的认证方案使用

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


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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.