如何在Windows身份validation中传递默认凭据

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

请在下面查看我的考试。

当我传递正确的Windows身份validation凭据时,它正在按预期工作。

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

但是,我想在使用我的服务时通过默认网络凭据

 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; 

当我传递默认凭据时。 我得到了以下exception。

HTTP请求未经授权使用客户端身份validation方案“Negotiate”。 从服务器收到的身份validation标头是“Negotiate,NTLM”。

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

要使用System.Net.CredentialCache.DefaultNetworkCredentials在UWP中传递WCF Windows身份validation的默认凭据,请首先确保已添加企业身份validation专用网络(客户端和服务器)function,如下所示:

在此处输入图像描述

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

对于专用网络(客户端和服务器)function,因为目前在Windows运行时我们只能传递Intranet中的默认凭据。 对于Internet,我们必须使用用户名和密码作为凭证。

有关function的更多信息,请访问: 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身份validation,然后它应该可以正常工作。

谢谢。