UWP发送默认凭证域帐户结果为401

时间:2018-04-18 08:19:34

标签: sharepoint uwp sharepoint-2013

我遇到与此处描述完全相同的问题:Using Default Credentials in System.Net.HttpClient request in UWP

我已登录域名。在我的UWP应用程序中,我想使用域凭据作为SharePoint的身份验证。我尝试过与上面的URL中描述的步骤相同的步骤。它确实可以在de代码中设置凭据,但这不是我想要的。

我试过的示例代码。

var handler = new HttpClientHandler();
handler.UseDefaultCredentials = true;

var server = "{ServerUrl}";

using (var client = new HttpClient(handler))
{
     var responseMessage = await client.GetAsync(server, system.Net.Http.HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
     var responseData = await responseMessage.Content.ReadAsByteArrayAsync();
     responseData.ToArray();
}

这总是返回401错误。

一些额外信息: 它也可以使用PowerShell并执行以下命令:Invoke-WebRequest -Method GET -Uri "{ServerUrl}" -UseDefaultcredentials。然后它返回200状态代码。

有人有个主意吗?

编辑:创建一个新的Windows 8.1应用程序并使用上面的代码确实有效(与上面的URL相同)。这些之间有什么区别?

EDIT2:在寻找Fiddler时,我看到以下内容: 使用Windows 8.1应用程序: picture 首先,它发送带有标头WWW-Authenticate: NTLM的请求,然后它发送另一个具有相同标头的请求,但随后发送一个令牌。在该请求之后,它返回200代码。

使用UWP应用: picture 在UWP中,它仅使用WWW-Authenticate: NTLM发送请求。然后它什么也没做。

我还发现了这一点:https://github.com/dotnet/corefx/issues/9234https://github.com/dotnet/corefx/issues/27672这是同一个问题。该问题转发给了这个问题:https://github.com/dotnet/corefx/pull/28105并且应该在.NET Core 2.1中(尚未推出,Q2)。这应该如何在UWP中发挥作用,我该怎么办呢?

编辑3:设置UseDefaultCredentials = true后,立即将其设置为false。 => https://github.com/dotnet/corefx/blob/f71c9d72cb776018147992ea0de8e08a440c4a4a/src/System.Net.Http/src/uap/System/Net/HttpClientHandler.cs#L183

最终编辑:Oke,作为描述的第一个链接,设置本地Intranet站点的URL确实有效。首先,我不知道他们为此做了什么。经过一些研究后,我发现了这个链接:https://technet.microsoft.com/en-us/library/dd572939(v=office.13).aspx#Anchor_0设置网址后,我可以使用域凭据进行身份验证。我没有在处理程序上设置任何属性。仅将Enterprise身份验证作为功能。这为我清除了很多东西,应该在一个控制良好的内部网环境中工作(我在VPN和Domain上,我没有控制权)。

0 个答案:

没有答案