2014-04-26 31 views
0

我有一个自托管服务,它包含一个使用NetTcpBinding和消息级安全性(Basic128)的端点。我的自托管服务没有验证远程客户端(netTcpBinding,MessageSecurity Basic 128)

可以成功加入该服务,并从位于同一台机器上的客户机访问

但是,如果我建立一个远程机器客户端(通过本地网络),我可以成功添加服务引用,但是当我尝试运行它,我得到一个SecurityNegotiationException说,“来电者不是由服务认证

它可能是什么?

这是该服务的服务模式:

<system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
      <behavior name="metadataSupport"> 
       <serviceMetadata /> 
      </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <netTcpBinding> 
      <binding name="ProductsServiceTcpBindingConfig"> 
       <security mode="Message"> 
        <message algorithmSuite="Basic128" /> 
       </security> 
      </binding> 
     </netTcpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="metadataSupport" name="Products.ProductsServiceImpl"> 
      <endpoint address="" binding="netTcpBinding" bindingConfiguration="ProductsServiceTcpBindingConfig" 
       name="NetTcp_IProductsService" contract="Products.IProductsService" /> 
      <endpoint address="mex" binding="mexTcpBinding" name="MetaDataTcpEndpoint" 
       contract="IMetadataExchange" /> 
      <host> 
       <baseAddresses> 
        <add baseAddress="net.tcp://localhost:8080/Service" /> 
       </baseAddresses> 
      </host> 
     </service> 
    </services> 
</system.serviceModel> 

这在远程客户端

<system.serviceModel> 
    <bindings> 
     <netTcpBinding> 
      <binding name="NetTcp_IProductsService"> 
       <security mode="Message"> 
        <message algorithmSuite="Basic128" /> 
       </security> 
      </binding> 
     </netTcpBinding> 
    </bindings> 
    <client> 
     <endpoint address="net.tcp://RemoteServer:8080/Service" binding="netTcpBinding" 
      bindingConfiguration="NetTcp_IProductsService" contract="ProductsService.IProductsService" 
      name="NetTcp_IProductsService"> 
      <identity> 
       <userPrincipalName value="RemoteServer\Rafael" /> 
      </identity> 
     </endpoint> 
    </client> 
</system.serviceModel> 

回答