2010-05-18 87 views
1

我最近一直在做一些關於認證Web服務調用(REST SOAP或其他)的最佳方法的研究。 但是沒有一種方法讓我相信...但是我仍然無法做出選擇...
有些人談論SSL和http基本認證 - 登錄/密碼 - 這對機器來說似乎很奇怪(我的意思是不得不將一個登錄名/密碼分配給一臺機器,或者不是?)。
有些人說API密鑰(看起來像這些計劃更多用於跟蹤,而不是真正的安全保護)。
有人說令牌(如會話ID),但不應該保持無狀態(特別是如果使用REST風格)?
Web服務認證叢林

在我的使用情況下,當遠程應用程序被調用的我們的網絡服務之一,我必須明明驗證調用應用程序,並調用必須 - 如果有的話 - 告訴我,冒充,所以我可以處理哪些用戶隨後授權。

有什麼想法?

+0

這是身份驗證/授權101.如果您需要說服這些不同的方法,則不瞭解每個方法的基本前提。我唯一的建議是 - 花更多時間學習。 – jro 2010-05-18 13:22:47

+0

對不起,我不理解你的評論。什麼是101?我確實瞭解身份驗證如何工作(授權)。我提出的問題是涉及某種「三方」,而不是兩個。 Web服務可能已知的客戶端,Web服務和客戶端用戶。
如果閱讀oauth,這似乎接近我所需要的。但它有一些不適用於我的情況的工作流程('您是否允許應用程序x連接到您的dta'東西)
是否讓我誤解了您的問題。對不起,我可能需要重新說明它。 – redben 2010-05-19 23:23:33

回答

1

所以,你有用戶 - > clientServer - > yourServer,是嗎?

您需要認證clientServer - > yourServer,以確保不只是任何人都可以與您的服務器通話。

如果這是一個建立的信任關係(即,你們聊天,簽署文件,並且「帶外」做其他事情),那麼你可以簡單地使用SSL證書,證書可以簽名。

基本上,您設置了自己的證書頒發機構,創建一個根證書,然後創建由該根證書籤名的客戶端證書。

然後,您將該證書發送到clientServer,並且不要讓任何人連接到您的服務,該服務沒有由根證書籤名的證書。

如果客戶永遠停止了他們的關係,你可以撤銷他們的證書,他們不能再跟你說話。

至於識別用戶,那需要成爲API的一部分。客戶應該正確地對其進行身份驗證,然後將所需的任何憑據轉發給您。

它可以是Web服務的第一類部分(如參數),或者如果您使用SOAP,它可以通過SOAP標頭中的SAML附件傳遞,然後可以提取。如您可能已經發現的那樣,WS-Security具有大約8000種保護SOAP Web服務的方法。

所以,它的種類取決於你想要做什麼以及其他要求。但考慮到你所擁有的少,這應該是桃色。

+0

感謝您的回覆請問, 現在已經夠清楚了。我只是害怕開始研究一些不會是「他們大多數人都在那裏工作」的架構。 你知道,重新發明輪子:) – redben 2010-05-20 11:28:20