2

我有一个作为 netTcpBinding 公开的 WCF 服务。

在服务方面:

<netTcpBinding>             
    <binding> 
      <security mode="Message">
        <message clientCredentialType="Windows"/>
      </security>         
    </binding>
</netTcpBinding> ...
// Service behavior
<behavior>         
    <serviceCredentials>
       <windowsAuthentication allowAnonymousLogons="true" />
     </serviceCredentials>          
</behavior>

我无法从另一台机器上的匿名用户访问此服务。(错误:无法验证协商失败的重传。)

做什么

<windowsAuthentication allowAnonymousLogons="true" /> 

做?

我希望 Windows 和匿名用户都可以通过 net tcp 绑定访问我的服务。我可以使用用户名验证来做到这一点,但是如何使用 Windows 身份验证来做到这一点?

谢谢

4

2 回答 2

3

您是否在客户端上设置了 AllowedImpersonationLevel?

<behaviors>
    <endpointBehaviors>
      <behavior>
        <clientCredentials>
          <windows allowedImpersonationLevel="Anonymous"/>
        </clientCredentials>
      </behavior>
    </endpointBehaviors>
</behaviors>

或者

client.ClientCredentials.Windows.AllowedImpersonationLevel = 
System.Security.Principal.TokenImpersonationLevel.Anonymous;
于 2013-05-30T15:25:18.060 回答
0

MSDN 文章Debugging Windows Authentication Errors指出需要将您的服务配置与@user1467261 提到的客户端配置相结合。它指向另一篇关于 WCF 中的模拟的文章以获得更多详细信息 - 但忽略它,组合这些设置的需要并不完全明显。

于 2013-05-31T03:42:05.690 回答