服务器已拒绝客户端凭据,双工wcf服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了服务器已拒绝客户端凭据,双工wcf服务相关的知识,希望对你有一定的参考价值。

我在Windows服务上托管了一个带有tcp绑定的wcf服务。它在我们的局域网上正常工作,但是当用户想从互联网连接到该服务时,他们会收到以下错误:

服务器已拒绝客户端凭据

这是我的服务配置:

 service behaviorConfiguration="WcfServiceLibrary1.Service1Behavior"
        name="LivePushServiceLib.SubscribeService">
        <endpoint address="" binding="netTcpBinding" bindingConfiguration=""
          contract="WCF_Interface.ISubscribeService">

        </endpoint>
        <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
          contract="IMetadataExchange" />
        <host>
          <baseAddresses>
            <add baseAddress="net.tcp://188.x.x.x:8524/SubscribeService.svc" />
          </baseAddresses>
        </host>
      </service>
    </services>
答案

您正在使用NetTcpBinding的默认安全性,即Windows。在您的局域网中,我假设每个人都非常愉快地使用Windows凭据。但是,来自Internet的人不太可能在您的域中拥有凭据

如果要在Internet上使用此功能,请将安全性设置为TransportWithMessageCredential,然后使用凭据类型的用户名。这允许基于Internet的客户端使用您可以在自定义UsernamePasswordValidator中验证的用户名进行身份验证

以上是关于服务器已拒绝客户端凭据,双工wcf服务的主要内容,如果未能解决你的问题,请参考以下文章

WCF 双工服务和 TCP 端口耗尽

WCF 双工连接(服务器 <-> 没有第二个客户端的客户端通信)

在双工 WCF 服务的客户端中使用基于任务的异步模式时出错

WCF系列之双工通信

ASP.NET 网站 + Windows 窗体应用程序 + WCF 服务:客户端凭据

使用 SignalR、WCF 双工服务和 ASP.Net 通用处理程序向客户端推送通知?