3

有一个运行在 linux 机器上的服务器,它理解 kerberos,它也处理 SPNEGO,只理解 kerberos,但它不理解 NTLM

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

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

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

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

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

4

2 回答 2

1

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

于 2015-03-16T16:53:24.457 回答
0

您必须将AuthScheme 参数设置为 WINHTTP_AUTH_SCHEME_NEGOTIATE

于 2012-05-09T14:07:21.010 回答