我正在配置WCF服务以在内部网络(Active Directory域)上使用,并且不关心窃听者是否可以读取Web服务请求和响应的内容。但是,我做关心坏人能够窃取凭据并冒充其他用户。
我知道如果我使用BasicHttpBinding创建一个WCF Web服务端点并将其安全模式设置为" TransportCredentialOnly",那么SOAP请求和响应不加密。
来自Microsoft Patterns and Practices book:
TransportCredentialOnly 提供相互身份验证 运输水平;没有提供消息保护。这个选项是 仅在basicHttpBinding上可用。
如果我按如下方式配置绑定:
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
上面引用的相互认证应该使用Kerberos进行。这意味着我不需要在SOAP请求文本中包含任何凭据,因为服务器已经识别了客户端的Windows身份。除非我非常错误,否则实际的Kerberos身份验证交换应该是固有加密和保护的,对吗?
所以我想知道的是,如果我使用TransportCredentialOnly和clientCredentialType =&#34; Windows&#34;配置服务,我是否会以明文形式公开任何可用于冒充Web服务客户端的内容(重播攻击等)?我可以在不设置SSL,部署证书等的情况下逃脱吗?在这种情况下,相互的Kerberos身份验证是否足够?
This CodeProject article指示人们使用此方法通过BasicHttpBinding启用Windows身份验证,但不评论这将是多么安全。