从Windows应用商店应用程序使用Windows身份验证调用WCF服务
本文关键字:Windows 身份验证 调用 服务 WCF 应用程序 应用 | 更新日期: 2023-09-27 18:30:04
我在本地计算机上为Win-Auth-配置了一个部署到IIS的WCF服务
<basicHttpBinding>
<binding name="NewBinding0">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
我有一个测试WPF项目,它可以很好地工作。我试图创建一个Windows应用商店应用程序,并使用我登录的(域)用户呼叫该服务,但无法正常工作我的用户是域用户,我可以通过调用Windows.System.UserProfile.UserInformation.GetDomainNameAsync()
来查看它
如果我实现部分ConfigureEndpoint并明确设置凭据,我就可以很好地访问服务-
static partial void ConfigureEndpoint(System.ServiceModel.Description.ServiceEndpoint serviceEndpoint, System.ServiceModel.Description.ClientCredentials clientCredentials)
{
clientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential("<domain>''<username>", "<password>");
}
但是如果我简单地把
clientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
我得到以下错误
{"HTTP请求未经授权,客户端身份验证方案为"Ntlm"。从服务器收到的身份验证标头为"协商,Ntlm"。}
我已经配置了企业身份验证和专用网络(客户端和服务器)功能
我需要做些什么才能在登录域用户的上下文中调用服务?
(我发现了这个没有答案的问题,可能是指同一个问题,但还没有答案?
发现问题是由于我在笔记本电脑上托管服务(用于测试)并使用"localhost"调用它。
我已经在域上的另一台服务器上部署了相同的服务,并更新了应用程序中的端点地址,一切都很好。
看起来对本地主机上的windows商店应用程序调用服务有限制
如果我明确地提供凭据,但如果我只是携带登录用户,则不太确定为什么这会正常工作。。