【问题标题】:How to pass default credentials in Windows Authentication如何在 Windows 身份验证中传递默认凭据
【发布时间】:2016-07-07 16:22:43
【问题描述】:

我正在使用 C#.net 开发 UWP 应用程序,它具有启用 Windows 身份验证的 WCF 服务。在使用添加服务引用选项使用服务调用后,我很难通过默认的 NetworkCredential。

请在下面找到我的考试。

当我通过正确的 Windows 身份验证凭据时,它按预期工作。

var service = new ServiceReference.Service1Client();
service.ClientCredentials.Windows.ClientCredential =new NetworkCredential("pradeep","****");
var test = await service.GetDataAsync(1);

但是,我想在使用我的服务 methis 时传递默认网络凭据

var service = new ServiceReference.Service1Client();
service.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
var test = await service.GetDataAsync(1);

我也尝试了以下选项。

service.ClientCredentials.Windows.ClientCredential = (NetworkCredential)CredentialCache.DefaultCredentials;

当我通过默认凭据时。我遇到了异常。

HTTP 请求未经客户端身份验证方案授权 '谈判'。从服务器收到的身份验证标头是 “协商,NTLM”。

我在 WPF 应用程序中使用默认 NetworkCredential 测试了相同的服务调用,它按预期工作。

【问题讨论】:

    标签: c# win-universal-app windows-10-universal


    【解决方案1】:

    为了使用 System.Net.CredentialCache.DefaultNetworkCredentials 在 UWP 中传递 WCF Windows 身份验证的默认凭据,首先请确保您已添加 企业身份验证 和 私有网络(客户端和服务器) 功能如下:

    对于企业身份验证功能,这是因为 Windows 域凭据使用户能够使用其凭据登录远程资源,并且就像用户提供了他们的用户名和密码一样。企业身份验证特殊功能通常用于连接到企业内服务器的业务线应用程序。

    对于Private Networks(Client & Server)能力,是因为目前在Windows Runtime中我们只能通过Intranet中的默认凭据。对于 Internet,我们必须使用用户名和密码作为凭据。

    有关功能的更多信息,请查看: https://msdn.microsoft.com/en-us/library/windows/apps/hh464936.aspx.

    之后,请尝试使用您的计算机名称完全合格的计算机名称代替您的 WCF 服务的 IP 地址,如下所示:http://YourComputerName:YourPortNumber/Service1.svc

    最后请使用另一台计算机作为客户端,使用System.Net.CredentialCache.DefaultNetworkCredentials测试UWP中的WCF Windows身份验证,然后它应该可以正常工作了。

    谢谢。

    【讨论】:

      猜你喜欢
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多