有一个服务器在Linux机器上运行,它可以理解kerberos,它也处理SPNEGO并且只理解kerberos但它不理解NTLM
firefox和IE使用kerberos令牌成功登录并访问网页,而不再提示输入密码。
现在,我正在尝试使用WinHTTP库编写应用程序。 我从这里跟着这个例子 http://msdn.microsoft.com/en-Us/library/aa383144(v=vs.85).aspx
在WinHttpSetCredentials调用中,我不想设置用户名密码,而是想告诉此调用使用现有凭据。我该怎么做?
如果我提到空白的用户名和密码,它不起作用,它会回退到NTLM并失败。
那么有人可以告诉我如何使用WinHTTPSetCredentials吗?
答案 0 :(得分:1)
实际上,您需要设置HTTP_OPTION_AUTOLOGON_POLICY以允许自动登录工作(请参阅WinHttpSetOption)。有了这个,WinHTTP库将处理401拒绝伴随WWW-Authenticate:Negotiate和后续基于Kerberos的自动重试。
答案 1 :(得分:0)
您必须将AuthScheme parameter设置为WINHTTP_AUTH_SCHEME_NEGOTIATE