在UWP

时间:2017-06-06 17:35:42

标签: c# .net uwp system.net

我们正在将Windows 8.1应用程序移植到UWP,并且在发送单点登录的默认用户凭据时遇到问题。尽管在处理程序上设置了UseDefaultCredentials = true,但似乎没有设置凭据。这个确切的代码在Windows 8.1中有效。

using (var client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }))
{
    // client._handle.Credentials is null
    // This call fails authentication with a 401 
    // and Fiddler shows no attempt to pass authentication
    var response = await client.GetStringAsync(new Uri(GlobalConfig.Config.BaseUri, "Presenter/SingleSignOn"));
    ...
}

如上所述,在调试中我可以看到client._handle.Credentialsnull

我还尝试设置System.Net.CredentialCache的凭据,但这些凭据似乎返回空凭据,并且还会生成null client._handle.Credentials

var handler = new HttpClientHandler() { Credentials = System.Net.CredentialCache.DefaultCredentials };
var handler = new HttpClientHandler() { Credentials = System.Net.CredentialCache.DefaultNetworkCredentials };

我已根据this answer仔细检查了我们声明的功能,看起来很好。我们宣布了能力:

  • 企业身份验证
  • 互联网(客户端)
  • 专用网络(客户端和服务器)
  • 可移动存储

我尝试过使用Windows.Web.HttpClient,但它有同样的问题 - 它没有找到默认凭据,因此它会通过用户界面提示。我错过了一些明显的东西吗还是一些不明显的东西?

TL; DR - 我在HttpClient请求中传递默认用户凭据时遇到问题。

编辑:我应该补充说,一般情况下认证工作正常。如果我明确传递用户名/密码,那么它可以工作。显然,这不是目标。

0 个答案:

没有答案