我有一个我目前连接的Web服务,并使用WinInet进行身份验证。它当前实现的方式是设置INTERNET_FLAG_NO_AUTH,并将标题明确设置为HttpSendRequest
的第二个参数。明确设置标头的好处是我们不会首先获得401响应,并且在#WWW中使用认证方法列表 - 认证:"报头中。
我们现在已在我们的服务中启用了Negotiate
身份验证,我们希望在客户端中实现此功能。在这种情况下,我们使用HttpSendRequest
发送请求而不使用Authorization: Basic
标头,并使用以下标头返回401响应:
WWW - Authenticate: Negotiate
WWW - Authenticate: Basic
然后我们再次使用相同的请求句柄再次调用HttpSendRequest
,一切似乎都有效,客户端通过Windows身份验证在服务器上进行身份验证。
是否有明确告诉WinInet
尝试使用Negotiate
协议发出请求?
我还不清楚WinInet
如何处理第二个请求。我试过打开Fiddler,但只是启用了Fiddler似乎打破了Negotiate
协议。