没有Windows凭据的netTcpBinding?

Sco*_*t P 9 wcf credentials nettcpbinding

我有一个机器控制应用程序,我有一台客户端计算机和五个服务器盒在机器子网上进行通信.没有域控制器.我想使用netTcpBinding来提供可靠性和事务支持.

当域控制器不存在时,是否可以使用此绑定进行用户名/密码验证?我不想使用证书,因为我不想管理900台计算机(150台机器)上的证书,这些计算机不会连接到办公室局域网.

mar*_*c_s 11

是的,当然 - 但前提是您使用Message安全性(而不是传输安全性).像这样定义绑定配置:

  <netTcpBinding>
    <binding name="UserNameSecurity">
      <security mode="Message">
        <message clientCredentialType="UserName"/>
      </security>
    </binding>
  </netTcpBinding>
Run Code Online (Sandbox Code Playgroud)

然后在端点中引用该绑定配置(在服务器和客户端上):

 <endpoint address="....."
           binding="netTcpBinding"
           bindingConfiguration="UserNameSecurity"
           contract="IMyService" />
Run Code Online (Sandbox Code Playgroud)

更新:
啊,是的,在服务器端,你需要一个证书来验证服务给客户端调用它,它还用于加密+签署消息.这只是在服务器上 - 客户端不需要安装任何东西.

组态:

<behaviors>
  <serviceBehavior>
    <behavior name="ServerInternet">
      <serviceCredentials>
        <serviceCertificate
           findValue="MyServiceCertificate"
           storeLocation="LocalMachine"
           storeName="My"
           x509FindType="FindBySubjectName" />
      </serviceCredentials>
    </behavior>
  </serviceBehavior>
</behaviors>
<services>
  <service name="MyServiceInternet"
           behaviorConfiguration="ServerInternet">
     ....
  </service>
</services>
Run Code Online (Sandbox Code Playgroud)

确保将服务器的证书安装到服务器上的"本地计算机"文件夹中,在配置中指定的"主题名称"下.