2014-01-28 66 views
0

我在理解如何保護REST API方面存在一些問題。 當客戶註冊時,密碼被散列並通過HTTPS發送到服務器。 然後,服務器存儲哈希(密碼+ privatesalt)。使用簽名保護REST API

當客戶端使用休息服務時,他使用自己的密碼創建了請求和簽名HMAC-SHA1(如here)。 服務器端,如何在數據庫中對密碼進行散列醃製時如何簽名與客戶端簽名進行比較的請求?

我知道數據在網上顯示清楚,但我只想驗證用戶。

回答

0

你說得對。如果密碼被存儲在服務器端的鹽漬散列&中,則無法驗證在請求上計算的HMAC:MAC需要客戶端和服務器之間的共享密鑰。

有些解決方案可能是:

  • 使用這不是用戶密碼的專用API密鑰。據我所知,這是AWS的選擇。該密碼用於對用戶帳戶進行管理操作(例如更改結算聯繫人),並且API密鑰僅由API客戶端使用。在這種情況下,如果此API密鑰遭到破壞,撤銷它並生成一個對安全性影響更有限的新密鑰相對容易。
  • 使用帶有X509客戶端證書的HTTPS。這是一個更重量級的解決方案,可能更復雜。但是,由於身份驗證已移至協議的傳輸層,因此API用戶透明。