使用基本身份验证调试本地WCF服务始终返回401-未经授权

时间:2018-07-25 13:47:52

标签: c# wcf localhost basic-authentication iis-express

访问使用基本身份验证的.Net WCF服务时遇到问题。服务器的web.config文件具有如下配置的服务:

<services>
  <service behaviorConfiguration="serviceBehavior" name="api.GlobalService">
    <endpoint address="" behaviorConfiguration="restBehavior" binding="basicHttpBinding"
      bindingConfiguration="Basic" contract="api.IGlobalService" />
  </service>
</services>

具有绑定:

<bindings>
  <basicHttpBinding>
    <binding name="Basic">
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Basic"/>
      </security>
    </binding>
  </basicHttpBinding>      
</bindings>

在我的IIS Express配置文件中,我启用了基本身份验证,如下所示:

<basicAuthentication enabled="true" />

我正在本地主机上的调试模式下运行它,并且我不需要自定义基本身份验证,而是希望它针对Windows凭据进行身份验证。我可以直接从浏览器访问服务器,并在出现提示时输入Windows凭据,也可以使用基本身份验证和凭据从Postman输入Windows凭据,但是我总是收到401。我无权访问我在自己的计算机上运行的服务器自己的凭证。对我做错了什么有帮助吗?

1 个答案:

答案 0 :(得分:0)

您可以在使用WCF服务的应用程序中尝试以下操作

WCFServiececlient.ClientCredentials.Windows.AllowedImpersonationLevel = TokenImpersonationLevel.Impersonation;
WCFServiececlient.ChannelFactory.Credentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;