2011-04-15 168 views
4

我正在創建一個鏈接到我正在創建的Web服務的網頁。web服務授權最佳實踐

現在網頁很簡單。我可以創建一個會話來存儲登錄信息,通過我的jQuery URL調用web服務傳遞給webservice。

但如何做到這一點,如果它不同的網站在不同的域訪問我的web服務(客戶端訪問通過javascript ajax)? 它會打電話給我的web服務/登錄?userid = & password =它返回一個會話ID 那麼該網站必須記住sessionID並將其包含在每次調用? 例如:爲了/呼出/創建地址= &項= &的companyName = &的sessionID = 435hg34kh

我很感激任何幫助,我可以收到有關此主題。

不是說這真的和上面的問題有關(我認爲)我正在用php編程webservice。

+0

這取決於程序語言。在C#中,您可以在設置連接時指定憑據。你有什麼特別的想法? – 2011-04-15 09:07:15

回答

2

Web服務身份驗證取決於服務合同中的HTTP/SOAP協議(通常使用令牌)。

基於第一次調用檢索ID然後交換會話ID的解決方案對於客戶端調用是很好的(它不能訪問HTTP/Soap協議,只有服務參數,在這種情況下,您通常使用基於Rest的輕量級Web服務)。

業務方調用也可能依賴於基本身份驗證或WS-Security。 Ebay正在使用你的方法來實現它的web服務,這通常是從商業應用程序(而不是直接客戶端瀏覽器)調用的。

一個結果是,服務器和客戶端需要維護會話令牌。您最終需要註銷用戶的無效服務(防止登錄令牌被重用)。

跨域的Javascript調用HTTP基本方法是記錄here

+0

這是一些很棒的信息謝謝你。我沒有使用網絡服務的歷史,並且在開始研究之前就開始做了。從我有learend,因爲我的webservice可能會被看作類似於一個寧靜的web服務。 – roguecoder 2011-04-17 22:31:51

+0

我使用Zend和PHP使用MVC佈局來允許以json格式正確返回異常。 (稍後將添加xml)。 當前網站和webservice位於同一個域,並共享相同的會話。 但是,據我所知,這不適用於外部使用。 – roguecoder 2011-04-17 22:39:25

+0

我可以做出的最簡單的改變是需要從登錄傳回的會話ID,然後需要由用戶存儲以在稍後的呼叫中返回。 – roguecoder 2011-04-17 22:39:41