Windows身份验证无法与HttpClient一起使用

时间:2014-09-01 12:53:38

标签: httpclient windows-authentication

我正在尝试使用HttpClient访问网站中的文件,但我获得了401 Unauthorized。

网站配置了

<authentication mode="Windows" /> 
...
<authorization>
  <allow users="*" />
</authorization>

IIS仅配置为Windows身份验证。

我可以通过指定URL中的地址来使用Internet Explorer访问该文件,并且不会提示我输入用户名/密码。

当尝试使用HttpClient进行“相同”操作时,我获得了401 Unauthorized。

var httpClientHandler = new HttpClientHandler { UseDefaultCredentials = true };

using (var httpClient = new HttpClient(httpClientHandler))
{
    var response = httpClient.GetAsync("http://example.com/welcome.png");
    // The response is 401 Unauthorized.
}

我做错了什么?

更新:

使用基本身份验证并指定httpClientHandler.Credentials = new NetworkCredential(“DOMAIN \ my.name”,“mypassword”)时,它可以正常工作,但不言而喻,这不是一个选项。需要Windows身份验证,而不必指定用户名/密码。

1 个答案:

答案 0 :(得分:0)

您可以在IE中查看该文件,因为您已经登录到计算机,IE负责将令牌/票证(成功登录后生成)传递给服务器以通过Windows身份验证。

您可以参考MSDN并了解如何使用HTTPClient进行Windows身份验证 http://social.msdn.microsoft.com/Forums/windowsapps/en-US/78c981f4-9dc6-4785-a8ff-f8e90d7c93b7/is-there-a-way-to-get-windows-authentication-with-httpclient

相关问题