在WCF中使用Windows身份验证类型时,是否以纯文本格式发送用户名和密码?

时间:2012-11-30 04:27:51

标签: c# wcf security

如果我有以下绑定:

<bindings>
  <wsHttpBinding>
    <binding name="Binding">
      <security mode="Transport">
        <message clientCredentialType="Windows"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

用户名和密码是否可以通过网络以纯文本形式发送?

修改

我知道默认情况下wcf会加密连接。我问这个问题的原因是:

enter image description here

我从http://msdn.microsoft.com/en-us/library/aa354513.aspx

那里得到了

所以我的问题是我知道默认情况下连接是加密的。但是,我是否需要ssl证书才能防止用户看到用户名和密码。我知道,一旦我通过身份验证,邮件就会被加密。但是密码和用户名也加密了吗?

3 个答案:

答案 0 :(得分:5)

此处的其他答案具有误导性和错误性,尽管他们可能会通过提及运输安全性向您保证。正确答案是 Windows身份验证不会以纯文本格式发送密码。

当客户端向服务器保证用户是他们所声称的用户时,Windows身份验证就会起作用。没有密码通过网络传输。

如果您使用基本身份验证,则密码将通过网络传输;如果使用任何https传输,则连接已加密,但在该连接中,邮件内容未加密。

请参阅How secure is WCF wsHttpBinding's Windows authentication?类似的问题。

有关WCF传输安全性的更多信息,请参阅MSDN Message and Transport Security

答案 1 :(得分:1)

通过电汇发送的数据,包含在邮件中的是纯文本;但是,鉴于正在使用传输安全模式,客户端 - 服务器通信通过http(以及TCP的情况下为TLS)通过ssl进行保护。

有关传输如何保护通信的更多信息,请参阅here

但是因为两个通信方都不需要理解xml级别的安全性概念,所以消息的实际xml是以纯文本形式发送的。

编辑:Kirk Broadhurst是正确的 - 在Windows身份验证的情况下,用户名和密码不会附加到/出现在邮件上,但是任何存在的数据都不会加密。

答案 2 :(得分:0)

WsHttpBinding默认加密消息,因此它不是纯文本。

更多信息here