我托管一个wcf服务,在Windows服务上绑定tcp。它在我们的 LAN 上正常工作,但是当用户想要从互联网连接到服务时,他们会收到以下错误:
服务器已拒绝客户端凭据
这是我的服务配置:
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 上使用它,请查看将安全性设置为类似 TransportWithMessageCredential 的内容,然后使用凭据类型的用户名。这允许基于 Internet 的客户端使用用户名进行身份验证,您可以在自定义 UsernamePasswordValidator 中验证该用户名