如何使用WinHTTP库进行kerberos(windows集成)身份验证

时间:2010-12-16 09:08:11

标签: http kerberos winhttp

有一个服务器在Linux机器上运行,它可以理解kerberos,它也处理SPNEGO并且只理解kerberos但它不理解NTLM

firefox和IE使用kerberos令牌成功登录并访问网页,而不再提示输入密码。

现在,我正在尝试使用WinHTTP库编写应用程序。 我从这里跟着这个例子 http://msdn.microsoft.com/en-Us/library/aa383144(v=vs.85).aspx

在WinHttpSetCredentials调用中,我不想设置用户名密码,而是想告诉此调用使用现有凭据。我该怎么做?

如果我提到空白的用户名和密码,它不起作用,它会回退到NTLM并失败。

那么有人可以告诉我如何使用WinHTTPSetCredentials吗?

2 个答案:

答案 0 :(得分:1)

实际上,您需要设置HTTP_OPTION_AUTOLOGON_POLICY以允许自动登录工作(请参阅WinHttpSetOption)。有了这个,WinHTTP库将处理401拒绝伴随WWW-Authenticate:Negotiate和后续基于Kerberos的自动重试。

答案 1 :(得分:0)

您必须将AuthScheme parameter设置为WINHTTP_AUTH_SCHEME_NEGOTIATE