Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Windows.Web.Http.HttpClient进行NTLM身份验证_C#_Authentication_Uwp_Windows 10 Universal - Fatal编程技术网

C# 使用Windows.Web.Http.HttpClient进行NTLM身份验证

C# 使用Windows.Web.Http.HttpClient进行NTLM身份验证,c#,authentication,uwp,windows-10-universal,C#,Authentication,Uwp,Windows 10 Universal,我正在开发一个Windows 10 UWP应用程序,该应用程序需要使用NTLM身份验证与IIS服务器通信。我正在HttpBaseProtocolFilter中设置用户名和密码: filter.ServerCredential=新密码凭证(uri、用户名、密码) 当我在fiddler中查看请求时,它使用的是基本身份验证。我能做些什么让它使用服务器所需要的NTLM吗 请求标头: Content-Length: 1459 Content-Type: text/xml; charset=utf-8 H

我正在开发一个Windows 10 UWP应用程序,该应用程序需要使用NTLM身份验证与IIS服务器通信。我正在HttpBaseProtocolFilter中设置用户名和密码:

filter.ServerCredential=新密码凭证(uri、用户名、密码)

当我在fiddler中查看请求时,它使用的是基本身份验证。我能做些什么让它使用服务器所需要的NTLM吗


请求标头:

Content-Length: 1459
Content-Type: text/xml; charset=utf-8
Host: server
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: ClientId=XXXXXXXXX
Authorization: Basic XXXXXXXXX
响应标题:

HTTP/1.1 401 Anonymous Request Disallowed
Server: Microsoft-IIS/8.5
request-id: xxxxx
WWW-Authenticate: NTLM
WWW-Authenticate: Negotiate
X-Powered-By: ASP.NET
X-FEServer: XXXXXXX
Date: Thu, 03 Dec 2015 16:12:58 GMT
Content-Length: 0
Proxy-Support: Session-Based-Authentication

简短回答:NTLM auth不使用用户名/密码。需要再次重试连接,因为当服务器需要NTLM时,HttpClient正在预发送基本身份验证


详细回答:我的应用程序与同一服务器上的两个服务联系。第一个允许基本身份验证,但第二个只允许NTLM。首先,我连接到基本身份验证服务,然后连接到NTLM服务。我假设HttpClient在获得
WWW-Authenticate:NTLM
头时会自动使用NTLM执行重试,但似乎没有。但是,如果我手动重试连接,那么第二次HttpClient将执行NTLM身份验证。

您的代码适用于我的NTLM。您可以发布以前的Fiddler请求和响应吗?注意:我正在设置密码凭据的用户名,格式为:
{domain}\{username}