浏览器支持HTTP摘要认证中的nextnonce指令

时间:2015-10-21 14:10:35

标签: c++ http-authentication digest-authentication

我已经完成了一个基于C ++的HTTP服务器(或改写 - 溢出了另一个海洋中的一滴)并遇到了HTTP摘要身份验证的问题。

根据HTTP authentication RFC使用nextnonce标头中的Authentication-Info指令是实现单一使用nonce机制的有效方法。我已根据RFC完成此操作,但Chrome和Firefox似乎都忽略了该指令并使用初始nonce发出所有进一步的请求,从而触发不需要的401响应。 Firefox的示例说明:

第一个请求 - 我的服务器返回401并发出初始随机数a1f778b2afc8590e4a64f414f663128b enter image description here

Firefox成功验证并获得Authentication-Info: nextnonce="0b72e74afbcab33a5aba05d4db03b801"标头的回复 enter image description here

Firefox发出新请求以从返回的html中获取图像 - 仍然使用初始nonce c1587dd7be6251fa715540e0d6121aa5,因此会发回一个带有新nonce的回复和一个提供的nonce过期的标志。 enter image description here

与第一个图像请求相同的情况。 enter image description here

现在身份验证使用新的nonce成功。 enter image description here

第二个请求的身份验证也会成功。 enter image description here

从图像中可以看出 - 即使我在第一次请求成功授权后回复Authentication-Info: nextnonce="0b72e74afbcab33a5aba05d4db03b801",接下来的两个请求仍然使用原始的nonce而不是提供的nextnonce值。有没有人有类似的经历?我肯定做错了 - 即使RFC说客户端应该回复提供的nextnonce值,因此它不是强制性的我非常怀疑最流行的浏览器不会使用这种技术。

1 个答案:

答案 0 :(得分:1)