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

Browser support of nextnonce directive in HTTP digest authentication

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

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

第一个请求 - 我的服务器 returns 401 并发出初始随机数 a1f778b2afc8590e4a64f414f663128b

Firefox 成功验证并收到 Authentication-Info: nextnonce="0b72e74afbcab33a5aba05d4db03b801" header 的回复

Firefox 发出新请求以从返回的 html 中获取图像 - 仍使用初始随机数 c1587dd7be6251fa715540e0d6121aa5,因此使用新随机数和提供的随机数已过期的标志进行回复被送回。

与第一个图片请求相同的场景。

现在使用新随机数验证成功。

第二次请求也认证成功。

如图所示 - 即使我在第一个请求成功授权后回复 Authentication-Info: nextnonce="0b72e74afbcab33a5aba05d4db03b801",接下来的两个请求仍然使用原始随机数而不是提供的 nextnonce 值.有没有人有过类似的经历?我肯定做错了什么——尽管 RFC 说客户端 应该 回复提供的 nextnonce 值,因此这不是强制性的,我高度怀疑最受欢迎的浏览器不使用这种技术。

看起来这是一个已知的 Firefox 错误,自 2001 年以来一直存在。

Bug 150605 - digest authentication problem: Mozilla ignores the nextnonce parameter of Authentication-Info Response Header.
这是
的副本 Bug 116177 - next nonce digest auth test fails