2011-06-22 44 views
0

我正在尋找解決方案,目前尚未成功:我正在計劃一個RESTful Web服務,其中某些操作(例如DELETE)需要特殊的身份驗證。帶有額外驗證的HTTP DELETE請求

這個想法是,用戶有一個正常的用戶名/密碼登錄(基於會話或基本身份驗證,這裏並不重要),使用它們可以訪問該服務。某些操作需要以PIN碼或甚至一次性密碼的形式進行額外的身份驗證。在登錄過程中加入額外的認證是不可能的(並且會錯過整個練習的重點)。

我想過特殊的頭文件(類似於X-OTP-Authetication),但是這將使得通過標準HTML頁面訪問服務變得不可能(無法將自定義頭文件包含到鏈接中)。 另一種選擇是HTTP查詢參數,但似乎不鼓勵,特別是對於DELETE。

任何想法如何解決這個問題?

+1

您是否考慮過[OAuth](http://oauth.net/documentation/getting-started/)?它包含一些擴展的認證和支持已知的提供商,如Facebook,谷歌和微軟。 –

回答

1

REST Web Service Security with jQuery Front-End

如果您還沒有準備好,我建議你在OAuth 1.02.0一些閱讀。它們都被更大的API使用,比如Facebook,Netflix,Twitter等等。 2.0仍在草案中,但這並沒有阻止任何人實施它並使用它,因爲它對於客戶來說更簡單。這聽起來像你想要更復雜和更安全的東西,所以你可能要專注於1.0。

我總是發現Netflix的Authentication Overview是客戶的一個很好的解釋。

+0

當我獲得OAuth時,這是爲3方設置而設計的,用戶希望某個網站在不透露密碼的情況下訪問他在Web服務上的數據。我正在尋找的是不同的。用戶身份驗證完全在我的控制之下,只是某些操作需要額外的標識(例如由硬件令牌生成的一次性密碼)。無論如何,感謝您的提示,我會仔細研究OAuth,也許我錯過了一些東西。 – Michael

+0

夠公平的。對於內部服務來說可能有點矯枉過正,但它可以這樣使用(我們的移動應用程序使用它來使用我們的公共API進行身份驗證)。我對2.0最爲熟悉,但它運行的是具有範圍的令牌(如會話密鑰)。你可以做一個類似的模式,因此一些DELETE需要一個範圍,而更多的受保護的DELETE可以採用不同的範圍,這個範圍必須由客戶端應用程序單獨請求。 –