none
[WCF]netTCPBinding绑定Transport安全模式,客户端验证windows的情况,不需要设置服务端证书? RRS feed

  • 问题

  • 在看windows sdk document中WCF的例子,在netTCPBinding绑定Transport安全模式,客户端验证windows的场景,例子中不需要设置服务端证书。
    我的理解,安全模式为Transport时,要么使用SSL,要么使用TLS来保证消息在传输层的安全,这两种方式都是需要服务端证书的。
    文档中在说这种场景下,安全有windows security来保证,我不太清楚,这个windows security具体指什么?
    2008年10月6日 1:54

答案

  • 你好,

    默认情况下netTcpBinding使用的是windows security来验证用户的.调用者必须提供Windows credentials. 默认情况下类似这样的配置:

    <netTcpBinding>
      <binding name="netTcp">
        <security mode="Transport">

          <transport clientCredentialType="Windows" />
        </security>
      </binding>
    </netTcpBinding>

     

    用SvcUtil生成的代理类中的ClientCredentials 使用的是客户端进程的Windows Identity.我们也可以显示指定:

    ChannelFactory<IMySecureService> factory = new ChannelFactory<IMySecureService>( );

    // Windows
    factory.Credentials.Windows.ClientCredential = new
    NetworkCredential("username", "password", "domain");
    2008年10月7日 8:56
    版主

全部回复

  • 你好,

    默认情况下netTcpBinding使用的是windows security来验证用户的.调用者必须提供Windows credentials. 默认情况下类似这样的配置:

    <netTcpBinding>
      <binding name="netTcp">
        <security mode="Transport">

          <transport clientCredentialType="Windows" />
        </security>
      </binding>
    </netTcpBinding>

     

    用SvcUtil生成的代理类中的ClientCredentials 使用的是客户端进程的Windows Identity.我们也可以显示指定:

    ChannelFactory<IMySecureService> factory = new ChannelFactory<IMySecureService>( );

    // Windows
    factory.Credentials.Windows.ClientCredential = new
    NetworkCredential("username", "password", "domain");
    2008年10月7日 8:56
    版主
  • 非常感谢你的回复!
     
    这种情况的配置我按照SDK文档上做了,也通过了测试。
     
    我想知道的是这种情况下,windows security是如何保证消息的confidential和integrity的。
    我的理解windows验证只是用来保证客户端credentials传送到服务端的安全性和验证身份,不是用来加密客户端和服务端通讯数据的。
    2008年10月7日 9:26
  • 你好,

     

    你的理解是正确的. windows security并不保证消息的confidential和integrity. 这只是用来身份验证的.

    签名和加密在使用NetTcpBinding时是默认被使用的,所以这方面不用担心.

    2008年10月8日 1:43
    版主
  • 谢谢您的回复。
     
    我不是担心NetTcpBinding的安全,知道它是安全的。是想知道这种情况下保证消息安全性的原理,使用的什么机制?
    2008年10月8日 5:06
  •  

    你好,

    举个简单的例子,服务器端的方法中可以通过检查:

    WindowsIdentity wi = OperationContext.Current.ServiceSecurityContext.WindowsIdentity;

    来得到调用者的Windows Identity,然后决定是否提供服务.

    2008年10月8日 9:11
    版主
  •  

    windows的客户端验证方式是用来身份验证的,是不是用来消息加密和签名的
    2008年10月25日 16:38
  • 不错的讨论,我最近也在测试WCF安全Demo,使用NetTcpBinding和HttpBinding还是不一样的
    Frank Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    欢迎访问老徐的中文技术博客:Welcome to My Chinese Technical Blog
    欢迎访问微软WCF中文技术论坛:Welcome to Microsoft Chinese WCF Forum
    欢迎访问微软WCF英文技术论坛:Welcome to Microsoft English WCF Forum
    2009年8月16日 14:52
    版主