基本用户身份验证是否需要两阶段通信?

基本用户身份验证是否需要两阶段通信?

我的应用程序使用 boost::asio 连接到 Internet 的 HTTP 服务。最近,我们添加了对 HTTP 代理和基本用户身份验证的支持。如果用户在我们的程序中配置了代理,我们只需在每次 HTTP 调用时发送身份验证参数即可实现基本用户身份验证。参数按所述发送这里

Authorization: Basic <base64 Encoded username:password>

至少对于一个用户和他的代理服务器来说,这是可行的。其他用户报告说,他们的代理服务器回复了

407 需要代理身份验证

我猜有些代理服务器接受 1 个单阶段身份验证,而其他代理服务器则不接受。我没有找到任何信息表明请求了 2 阶段通信,其中第一次调用总是被拒绝访问并返回 407,而只有第二次调用被接受。

如果返回 407,我们的程序不会重试调用。我们必须添加这个吗?

我之前在 stackoverflow 上问过这个问题但没有得到充分的答复。

答案1

正如在RFC 2617(您应该已经读过)向代理服务器进行身份验证需要您发送标Proxy-Authorization头,而不是Authorization用于向原始服务器进行身份验证的标头。听起来您找到的一个“正常工作”的代理服务器实际上是“有问题的”。

相关内容