我的系统基于.net。他们的系统基于PHP。我们希望交换信息以进行查找并将数据添加到各自的数据库中。这必须安全地完成,这两个系统将是这场比赛中唯一的球员。
我一直在做一些研究,但与安全相关的事情总是让我失望。我必须承认,我在完全理解配置文件中的所有内容(WCF Web服务站点中的web.config)时遇到了一些麻烦。
从哪里开始确保他们安全地传输数据?假设我找出绑定的东西,他们会发送一个用户名和密码,我将不得不从他们的消息中提取?客户端将连接到https地址。
答案 0 :(得分:3)
有很多方法可以回答这个......
我认为他们的PHP应用程序将使用SOAP与您的WCF服务器进行通信?
因此,WCF在传输级别或消息级别有两种保护方式。 基本上,如果您打开传输级别安全性,则它会加密整个连接。这意味着它将使用HTTPS。这反过来意味着整个会话都是加密的,就像您将信用卡信息发送到网络表单中的网站一样。它同样安全。另一种方法是消息级安全性。这意味着,不是加密整个连接,而是通过普通的未加密HTTP进行通信,但实际的消息本身在通过网络传输之前将被加密。
如果您的服务托管在IIS中,那么最简单的方法就是使用BasicHttpBinding并启用传输安全性。然后在IIS中,让它使用SSL证书和HTTPS。
那将处理邮件加密。过去,如果你需要处理'登录'作为用户名和密码,WCF有一个内置的方法来处理它。这可能会有所帮助:http://nirajrules.wordpress.com/2009/05/22/username-over-https-custombinding-with-wcf%E2%80%99s-channelfactory-interface/
答案 1 :(得分:3)
PHP本身不支持邮件安全性。您需要一些额外的框架来支持它。我将WCF客户端与PHP公开Web服务集成,并使用WSO2 web services framework提供的消息安全性。 WSO2框架没有像WCF那样多的功能(至少PHP开发人员告诉它)它支持使用服务器和客户端证书(X.509证书令牌配置文件)的非对称安全性(WS-Security)以及用户名和密码作为支持token(具有消化密码的用户名令牌配置文件)。证书用于邮件加密和签名,用户名用于身份验证。这种集成是相当复杂的任务,因为相反,WCF不支持带有消化密码的用户名令牌配置文件,我们必须自己实现它。
因此,如果您可以使用带有消息凭据的HTTPS(传输安全性)(带有普通密码的用户名令牌配置文件),那么肯定会这样做。它不那么复杂,也更直接。
答案 2 :(得分:1)
您真的必须确定PHP在Web服务标准方面的局限性。例如,它可以处理WS-Security吗?
您可以通过SSL限制为basicHttpBinding
,在SOAP标头中发送用户名/密码(假设它处理SOAP标头)。