使用WsHttpBinding的WCF安全性TransportWithMessageCredentials

时间:2015-01-23 08:31:39

标签: .net wcf ws-security

我有我的网站(https:// example.com)。这是一个互联网应用

  
      
  1. 用户可以从上述网站注册 - 已完成
  2.   
  3. 注册用户将收到一封电子邮件,并将舔下载Windows客户端(WPF或Windows窗体客户端) - 已完成
  4.   
  5. 此WPF或Windows窗体客户端将使用example.com上托管的WCF(部署在Internet中)。我在内部传递消息正文中的UserName和Pwd .-已完成
  6.   

现在我需要知道的是如何在消息级别和传输级别实现安全性。

  
      
  1. 客户端请求应在消息级别加密
  2.   
  3. 应在消息级别加密WCF服务器响应
  4.   
  5. 客户端和服务器之间的通信应为SSL
  6.   

我已经从msdn.microsoft.com/en-us/library/ff648902.aspx

走了过来
  
      
  1. 如何:在WCF从Windows窗体调用中使用带有用户名身份验证的WsHttpBinding和TransportWithMessageCredentials
  2.   
  3. 如何:在Windows窗体的WCF调用中使用用户名身份验证与SQL Server成员资格提供程序和邮件安全性
  4.   
  5. 如何:在Windows窗体的WCF调用中使用证书身份验证和邮件安全性
  6.   

阅读上面的内容后,我很困惑我需要使用哪一个。请建议哪一个是我的方案满足上述三个安全条件的最佳选择

如果我使用TransportWithMessageCredential,我是否会在消息级别和传输级别看到加密?

1 个答案:

答案 0 :(得分:0)

TransportWithMessageCredentials是一个加密/安全选项,当您的WCF Web服务框由执行SSL / HTTPs加密工作的负载均衡器或反向代理构成时。

在"正常"在您的WCF Web服务盒位于逻辑DMZ内的情况下,WCF主机的加密和客户端身份验证检查只需一步完成,并且"裸露"请求内容(未加密且没有客户端身份验证凭据)由您的服务处理。

但是,如果您使用负载均衡器或反向代理执行加密(出于多种原因这是一个好主意),请使用" normal"传输加密将向您的WCF Web服务传送没有客户端身份验证凭据的消息。

因此,TransportWithMessageCredentials所做的是在邮件正文中保留客户端身份验证凭据,以便在RP / LB解密您的邮件之后,您的WCF Web服务可以在第二步处理您的客户端身份验证请求。

请?基本上,如果您使用F5负载均衡器或某些反向代理在WCF Web服务处理之前加密/解密您的邮件,则需要TransportWithMessageCredentials。无负载均衡器或反向代理,不需要TransportWithMessageCredentials。

希望澄清事情。