如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数据中没有固有的东西可用于将其与身份验证会话相关联。
那是什么交易? :)
答案 0 :(得分:0)
来自RFC 7235
5.1.2。新认证方案的注意事项
HTTP身份验证框架的某些方面 对新身份验证方案的工作方式施加限制:
o HTTP认证被认为是无状态的:所有的 必须提供验证请求所需的信息 在请求中,而不是依赖于服务器记住 先前的请求。基于或绑定的身份验证 底层连接超出了本规范的范围 并且本质上存在缺陷,除非采取措施确保 连接不能被除以外的任何一方使用 经过身份验证的用户(请参阅[RFC7230]的第2.3节)。
我记得这是怎么回事,但我想确定一下。因此,用户发送的每个请求都包含所有必要的凭据。服务器本身对身份验证的内容一无所知。它只是询问凭证是否有效,如果答案是肯定的,继续请求。