使用Kerberos票证运行时,我注意到每个firefox请求在HTTP标头中都有不同的授权行。我加载了一个简单的页面,然后多次点击重新加载按钮,它永远不会相同。是什么导致这种行为?我原以为授权行在Kerberos凭据的持续时间内保持不变。 (注意,在启动firefox之前,我通过kinit命令获取了凭据。)
当身份验证方法为Basic时,firefox每次都会继续发送相同的base64字符串'user:password'。这是我期望的行为。
有什么想法吗?
答案 0 :(得分:0)
答案 1 :(得分:0)
这是由于HTTP和Negotiate-Auth如何工作的各种限制。
HTTP最初设计为无状态协议,HTTP的身份验证系统假设该模型。它旨在在每个请求中进行完整的身份验证交换;例如,使用Basic,它会在每个请求中包含您的完整凭据。使用Negotiate-Auth和SPNEGO,同样如此:创建一个全新的GSS-API上下文,并对每个请求执行新的身份验证。
是的,这非常浪费。但是(当前)没有任何标准化的方式来进行一次身份验证,建立会话,然后将所有后续请求绑定到该会话(例如,IMAP,POP或ssh的方式)。 IETF在这方面有一些工作,但这是非常初步的。
票证被缓存;它每次都没有 做很多工作。但是服务器和客户端每次都要经历整个GSS-API会话舞蹈。