从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"。}

我已经配置了企业身份验证和专用网络(客户端和服务器)功能

我需要做些什么才能在登录域用户的上下文中调用服务?

(我发现了这个没有答案的问题,可能是指同一个问题,但还没有答案?

从Windows应用商店应用程序使用Windows身份验证调用WCF服务

发现问题是由于我在笔记本电脑上托管服务(用于测试)并使用"localhost"调用它。

我已经在域上的另一台服务器上部署了相同的服务,并更新了应用程序中的端点地址,一切都很好。

看起来对本地主机上的windows商店应用程序调用服务有限制

如果我明确地提供凭据,但如果我只是携带登录用户,则不太确定为什么这会正常工作。。