2010-12-16 73 views
4

有在Linux系统中,其理解的Kerberos,这也处理SPNEGO和理解只有Kerberos的运行的服务器,但它不明白NTLM如何使用的Kerberos的WinHTTP库(Windows集成)认证

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

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

在WinHttpSetCredentials打电话,我不想设定的用户名密码,而不是我想告诉这个调用中使用现有的凭证。我怎么做?

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

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

回答

0

你必须设置AuthScheme parameter到WINHTTP_AUTH_SCHEME_NEGOTIATE

+0

这还不够!仍然无法使用Kerberos登录Windows域中的网页。 – Sergey 2013-02-20 20:47:22

+0

您的IIS是否正确设置,在域中使用可信身份运行?您必须检查您的IE/Firefox为您的IIS服务器的SPN协商一个TGS。你可以使用“kerbtray.exe”来这样做。 – 2013-02-21 09:29:42

1

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