2011-02-16 35 views
2

我的系統基於.net。他們的系統基於PHP。我們希望交換信息進行查找並將數據添加到相應的數據庫。這必須安全地完成,這兩個系統將成爲這場比賽中唯一的球員。如何安全地在PHP和WCF之間進行通信

我一直在做一些研究,但與安全有關的東西總是讓我失望。我不得不承認,我完全理解配置文件(WCF Web服務站點中的web.config)中的所有內容。

從哪裏開始確保他們安全地傳輸數據?假設我找出綁定的東西,他們會發送一個用戶名和密碼,我將不得不從他們的消息中提取出來嗎?客戶端將連接到https地址。

回答

3

實際上有很多方法來回答這個...

我認爲他們的PHP應用程序將被傳遞到您的WCF服務器SOAP?

因此,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/

+0

謝謝!這肯定會清除一些事情。該鏈接也很有幫助。 – Michael 2011-02-16 21:57:18

1

您確實需要根據Web服務標準來確定PHP的侷限性。它可以處理WS-Security嗎?

您可能通過SSL將限制爲basicHttpBinding,在SOAP Header中發送用戶名/密碼(假設它處理SOAP標頭)。

3

PHP本身不支持消息安全性。你需要一些額外的框架來支持它。我將WCF客戶端與PHP公開的帶有WSO2 web services framework提供的消息安全的Web服務集成在一起。 WSO2框架沒有WCF那麼多功能(至少PHP開發人員告訴它),它支持具有服務器和客戶端證書(X.509證書令牌配置文件)以及用戶名和密碼作爲支持的非對稱安全(WS-Security)令牌(帶有消化密碼的用戶名令牌配置文件)。證書用於消息加密和簽名,用戶名用於驗證。這種集成是相當複雜的任務,因爲相比之下,WCF不支持使用消化密碼的用戶名令牌配置文件,我們必須自己實現它。

因此,如果您可以使用HTTPS(傳輸安全)與消息憑據(用戶名稱令牌配置文件與普通密碼)肯定會這樣。它簡單得多,簡單得多。

相關問題