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

时间:2014-03-21 11:59:22

标签: http boost http-basic-authentication

我的应用程序使用boost :: asio连接到Internet到HTTP服务。最近我们添加了对HTTP Proxys和基本用户身份验证的支持。我们通过在每个HTTP调用中发送Authentication参数来实现基本用户身份验证,如果用户在我们的程序中配置了代理。参数按照here

所述发送
Authorization: Basic <base64 Encoded username:password>

这至少适用于一个用户及其代理服务器。其他用户报告他们的代理服务器回复

  

需要407代理身份验证

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

如果已返回407,我们的程序仍未重试该呼叫。我们必须加上这个吗?

1 个答案:

答案 0 :(得分:2)

不,基本身份验证不需要多个请求。

即使你没有授权,你首先要做的请求。

如果一个代理服务器不接受请求/使用/基本身份验证头,那么可能它配置了另一个身份验证方案(摘要身份验证很常见,可以说更好)。

您应该检查完整的错误消息和/或联系服务器管理员以获取更多信息。或者,您可以使用Fiddler或Wireshark等工具来检查来自例如Fiddler或Wireshark的流量。您知道的浏览器在连接到同一代理服务器时没有问题。