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

问题描述 投票:0回答:4

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

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

是请求的page页面吗?

http basic-authentication digest-authentication
4个回答
347
投票

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

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

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


135
投票

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

请输入您的用户名和密码

<realm name>
:

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


27
投票

根据RFC 7235

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

有关更多详细信息,请参阅下面的引用(重点内容未在 RFC 中出现):

2.2。防护空间(境界)

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

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


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

注 2:

realm
参数不再总是需要在 challenges 上。


0
投票

Basic realm="restricted"
,这是什么意思?

我找到了一个很好的解释并在这里分享:

基本上,领域值是一个字符串,它允许您在应用程序中创建受保护空间的分区。因此,例如,应用程序可能具有“文档”领域和“管理区域”领域,它们需要不同的凭据。 Web 浏览器(或其他类型的客户端)可以缓存并自动为同一领域内的任何请求重复使用相同的用户名和密码,这样就不需要为每个请求显示提示。

并在@Green的评论中找到一个问题:

如何将页面(端点)与领域分组?

领域的概念主要用于指示客户端(通常是 Web 浏览器)自动为不同的请求 URL 发送不同的凭据。服务器端实现仍然需要将身份验证中间件应用到每个端点。

realm
值没有魔力,您仍然需要在服务器端为每个端点应用身份验证中间件。但不同的领域值将指示浏览器自动为不同的请求 URL 使用不同的凭据(用户名、密码)。

希望能有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.