我已经完成了一个基于C ++的HTTP服务器(或改写 - 溢出了另一个海洋中的一滴)并遇到了HTTP摘要身份验证的问题。
根据HTTP authentication RFC使用nextnonce
标头中的Authentication-Info
指令是实现单一使用nonce机制的有效方法。我已根据RFC完成此操作,但Chrome和Firefox似乎都忽略了该指令并使用初始nonce发出所有进一步的请求,从而触发不需要的401响应。 Firefox的示例说明:
第一个请求 - 我的服务器返回401并发出初始随机数a1f778b2afc8590e4a64f414f663128b
Firefox成功验证并获得Authentication-Info: nextnonce="0b72e74afbcab33a5aba05d4db03b801"
标头的回复
Firefox发出新请求以从返回的html中获取图像 - 仍然使用初始nonce c1587dd7be6251fa715540e0d6121aa5
,因此会发回一个带有新nonce的回复和一个提供的nonce过期的标志。
从图像中可以看出 - 即使我在第一次请求成功授权后回复Authentication-Info: nextnonce="0b72e74afbcab33a5aba05d4db03b801"
,接下来的两个请求仍然使用原始的nonce而不是提供的nextnonce
值。有没有人有类似的经历?我肯定做错了 - 即使RFC说客户端应该回复提供的nextnonce
值,因此它不是强制性的我非常怀疑最流行的浏览器不会使用这种技术。
答案 0 :(得分:1)