2011-12-28 92 views
3

我最近在一個涉及WCF服務的項目上工作,並使用wsHttpBinding進行身份驗證。使用PHP使用服務的第三方抱怨說,這種方法在PHP中無法正常工作,並且它不適合可互操作(他們更喜歡使用REST風格的方法,並通過GET憑證。)WS-Security如何互操作?

I'我從來沒有使用過PHP的服務,他們的論點是否持有任何水?

要展開:

不能夠得到的東西的工作開箱您的語言/環境不一定是缺乏interopability的一個很好的理由,我沒有真正被他們說服了。我很好奇它是如何在更廣泛的範圍內進行互操作的,因爲我希望我的服務不僅可以被.NET客戶輕鬆使用。

附加說明:

我用TransportWithMessageCredential,該憑證由IIS驗證了該服務,而不是。以這種方式向RESTful服務提供憑據的首選方式是什麼? (這應該是一個單獨的問題?)。我只是想知道在這種情況下它甚至是否可行。

+0

PHP是一種腳本語言。如果發現它沒有實施開箱即用的國際標準,我不會感到震驚。 – 2011-12-28 19:23:32

回答

0

的確,REST很容易在各種編程平臺和操作系統上實現(例如,Linux框上的PHP,這是一種非常常見的設置)。

作爲SOAP的擴展,WS-Security是一種標準化協議,並且存在除.NET之外的其他平臺的實現。然而,這裏免費庫的範圍是非常有限的(對於PHP,我不知道),它肯定意味着更多的努力來連接到WS-Security服務,而不是簡單的REST服務,至少如果服務使用協議功能超出了純粹的SOAP範圍。

還有一件事:HTTP內置了身份驗證支持,因此您可以絕對實現經過身份驗證的RESTful服務,而無需向請求的URL添加憑據。

+0

我已經更新了我的問題,但傳輸本身並不需要進行身份驗證,而是需要消息。該服務使用'TransportWithMessageCredential',並且服務驗證憑證。 – diggingforfire 2011-12-28 19:47:51

+0

我懷疑用PHP這樣的非.NET語言來使用這樣的功能會很容易。如果你想知道如何實現與REST相媲美的東西,那將是值得一個新問題。另請參閱http://stackoverflow.com/questions/1933234/calling-a-wcf-webservice-in-php-via-wshttpbinding以獲取更多信息。 – 2011-12-28 19:50:20

+0

REST不是協議。這只是一種技術。 – DanMan 2014-10-13 11:58:50

1

我和我的一些客戶也有同樣的問題(也從PHP調用我的服務)。

所以我們只是額外暴露了basicHttpBinding端點。

我用交通運輸安全與UsernamePassword在端點認證。

+0

我的服務仍然需要消息安全性,並且只有'wsHttpBinding' – diggingforfire 2011-12-28 20:13:49

+0

@diggingforfire可用 - 您爲什麼不使用傳輸安全性?無法在PHP中使用wsHttpBinding。我使用傳輸(SSL)進行身份驗證的加密和用戶名/密碼。 – Maxim 2011-12-28 20:19:42

+0

憑證需要由服務處理,而不是由網絡服務器(IIS)處理,因此他們需要在消息中。但它仍然是HTTPS(如果沒有HTTPS,你不能使用郵件安全性) – diggingforfire 2011-12-28 20:26:01