为什么称为授权的身份验证的HTTP标头?

时间:2015-05-05 19:52:07

标签: http authentication authorization

让我引用www.w3.org上的HTTP 1.1 RFC specification

  

10.4.2 401 未经授权

     

该请求需要用户身份验证。响应必须包括一个   包含挑战的WWW- 验证标题字段(第14.47节)   适用于所请求的资源。客户可以重复   请求使用合适的授权标题字段(第14.8节)。

     

14.8 授权

     

希望对服务器进行身份验证的用户代理通常(但不一定)收到401后   响应通过包含授权请求标头字段来实现   随着请求。 授权字段值包含   包含用户身份验证信息的凭据   代理请求的资源领域。

为什么凭据旨在证明用户身份(身份验证)在授权标头中传递?

2 个答案:

答案 0 :(得分:2)

一种可能性是,它是从用户的角度而不是从服务器的角度谈论授权。

实际上有两个授权正在进行:

  1. 用户授权客户代表他们行事。
  2. 服务器授权用户访问其资源。

如果我们假设标头以1)命名,那么我们有:

用户 授权 客户端代表他们行事。该授权位于Authorization标头中。然后,服务器使用用户对客户端的授权来对用户进行认证(确认客户端代表用户)。现在,它知道用户是谁,然后将对2)做自己的单独检查,以查看用户是否有权执行该请求。

答案 1 :(得分:1)

你可以这样看。服务器告诉客户端"请在访问此资源之前进行身份验证"并发送有关客户端应如何进行身份验证的信息(WWW-Authenticate)。客户端负责验证,然后将该验证的证据发送到服务器(Authorization)。

Basic身份验证方案会让事情变得混乱,因为授权是用户名和密码,也就是说,您通过对服务器本身进行身份验证来授权(显示您知道用户和密码)。

然而,其他方案允许客户端与第三方进行身份验证,并仅向服务器发送身份验证证明。服务器可以验证授权,可能不知道客户端是谁(尽管通常是这样)。

注意这只是一种合理化。我并不是说这是所选名字背后的动机。