摘要认证请求中的 HTTP No Authorization 字段

HTTP No Authorization field in the digest authentication requests

我的 SOC 上有一个带有摘要式身份验证的 http 服务器。在尝试验证服务器时,服务器会正​​确发送带有 401 代码和 WWW-Authenticate header 以及随机数和摘要模式的响应。但是,在某些主机上,浏览器不会在它们应该包含的后续请求中包含随机数等授权字段。

这是 Edge 登录尝试:

响应 WWW-Authenticate - https://i.imgur.com/tcw1XYL.png。 在上面的屏幕中,服务器返回正确的 WWW-Authenticate 字段。

未经授权的请求 - https://i.imgur.com/4z61rU5.png。 我希望在下一个请求中有授权字段,但是有 none!

Chrome 尝试类似,只是它立即显示没有登录提示的 401 页面,因为 header 中没有授权字段。

Chrome 和 Edge 都是 Windows 10.

上的最新 64 位版本

哪些可能的问题可能导致此行为?

显然问题是 multi-line WWW-Authenticate header。您可以在屏幕截图中看到 header 字段值之间的“/r/n”分隔符(0x0d 0x0a 字节)。

最初的 RFC 2616 允许这样的 multi-line,然后被更新的 RFC 7230 弃用。有关详细信息和链接,请参阅 https://whosebug.com/a/31324422/8876135

通过将 header 字段设为单行来修复该字段后,问题就消失了。我仍然不知道为什么完全相同的浏览器在某些主机上遇到 header 这个问题,但在我的 work/home PC 上却完全没问题。