我有一個Restful Web服務API,由不同的第三方使用。該API的一部分受到限制(您需要用戶名/密碼才能訪問它)。我想知道什麼是實現身份驗證的最佳方式?Restful Web服務身份驗證
我使用的是https,因此通信是加密的。我有兩個想法:
- 在用戶開始使用(受限)服務之前,它使用POST發送用戶名/密碼(因爲正在使用https來加密憑據)。登錄成功後,服務器發回與此用戶名匹配的隨機一次性值(隨機數)。當發出下一個請求時,客戶端發送先前返回的現時值。服務器匹配用戶名和隨機數,並沿請求的數據返回新的隨機數。每個新請求都使用新的隨機數。基本上,這是一個Digest訪問認證的輕量級版本。
- 由於此API是從第三方使用的,因此每個(受限)請求都可以使用用戶名/密碼。由於正在使用https,它們將被加密。這種方法的崩潰是這樣的事實,這不會是Restful兼容(POST會被永遠使用)。
我更接近選擇第一種方法(它是Restful兼容,相對容易實現,XML,JSON或HTML可以使用而不用改變任何東西),但我想看看你的意見是什麼?你有什麼建議:第一,第二或第三種方法?
順便說一句,我在服務器端使用Python。
最好的答覆任何措施。如果你可以在這裏給出一個很好的算法介紹,我相信你很快就會得到大量的票數!我認爲,其中最重要的一點是:「您首先使用您的祕密訪問密鑰來創建簽名密鑰,簽名密鑰的範圍是特定區域和服務,另外,簽名密鑰在創建後七天過期。簽名密鑰的範圍和生命週期是有限的,如果簽名密鑰受到威脅,數據的風險就會降低。「 – Domi 2015-04-22 16:08:42