协商HTTP身份验证机制如何建立会话?

时间:2014-08-11 01:09:45

标签: http http-authentication http-negotiate

RFC 4559中所述,Negotiate机制可能需要多个请求才能完成GSSAPI上下文。然而,我无法从RFC中理解用于将这些请求彼此关联的机制。采用RFC第5节中描述的示例:

1:
  C: GET dir/index.html

2:
  S: HTTP/1.1 401 Unauthorized
  S: WWW-Authenticate: Negotiate

3:
  C: GET dir/index.html
  C: Authorization: Negotiate a87421000492aa874209af8bc028

4:
  S: HTTP/1.1 401 Unauthorized
  S: WWW-Authenticate: Negotiate 749efa7b23409c20b92356

5:
  C: GET dir/index.html
  C: Authorization: Negotiate 89a8742aa8729a8b028

我很清楚直到第5步。假设可能有许多客户端同时进行身份验证,服务器如何知道步骤5中的Authorization标头是对步骤4中数据的响应?我看不到会话cookie或任何内容的提及,虽然我不是GSSAPI的专家,但我认为GSSAPI数据中没有固有的东西可用于将其与身份验证会话相关联。

那是什么交易? :)

1 个答案:

答案 0 :(得分:0)

来自RFC 7235

  

5.1.2。新认证方案的注意事项

     

HTTP身份验证框架的某些方面     对新身份验证方案的工作方式施加限制:

     

o HTTP认证被认为是无状态的:所有的        必须提供验证请求所需的信息        在请求中,而不是依赖于服务器记住        先前的请求。基于或绑定的身份验证        底层连接超出了本规范的范围        并且本质上存在缺陷,除非采取措施确保        连接不能被除以外的任何一方使用        经过身份验证的用户(请参阅[RFC7230]的第2.3节)。

我记得这是怎么回事,但我想确定一下。因此,用户发送的每个请求都包含所有必要的凭据。服务器本身对身份验证的内容一无所知。它只是询问凭证是否有效,如果答案是肯定的,继续请求。