2014-04-26 47 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> 

回答