2010-03-23 69 views
3

我們正在實施一項新的網絡服務。 Web服務將成爲敏感數據的存儲區,並且有多個具有不同權限的用戶類型。因此,某些用戶類型無法訪問某些類型的數據(有些用戶類型無法更改等等)。這在REST中如何工作?我對REST很新,很抱歉,如果這聽起來不太好。如何安全地使用敏感數據來實現REST?

回答

5

您的第一步是提供一些SSL形式的傳輸加密。這應該注意確保在中間攻擊中沒有人,並且沒有人在監聽數據。其次,你需要弄清楚某種認證方法。一種流行的方法是創建一個登錄服務,並向其發送用戶名和密碼,並返回某種有限生命密鑰。然後您發送此密鑰以及所有子請求,服務器在返回任何數據之前驗證它。如果你有不同的用戶級別,那麼以及檢查密鑰也檢查給定的用戶是否應該能夠訪問該信息。

1

不管是什麼,你可能會想將它與HTTPS.

加密客戶端可以簡單地包括在每個請求的用戶名和密碼。

或者您可以有一個登錄請求來驗證用戶身份,並在cookie中或作爲響應的一部分返回會話狀態令牌。

1

作爲第一個海報國家,它是一種流行的模式,爲客戶提供一種手段來首先對您的系統進行身份驗證(谷歌爲他們的一些apis執行此操作)。其中的答覆包括一個令牌,以便客​​戶端將其作爲參數包含在後續請求中。

例如HTTP POST(通過SSL)到http://you/auth使用用戶名和(密碼的MD5哈希) - 比較這與你爲他們存儲的密碼的MD5。

用HTTP 200 OK和帶有您的身份驗證令牌的消息正文或標頭進行響應。

這對重新提交每個請求的auth憑證具有雙重好處。對於令牌(現在只是一個有效性檢查 - 可能針對有效令牌的內存存儲)而不是用戶和密碼的數據庫查找,可以減少令牌的處理開銷。您還可以減少通過線路發送憑證的次數(儘管SSL加密)。

在您的資源端點上實施訪問控制需要多一點工作,但基本上只是指定哪些令牌可用於針對哪些資源。這將根據您的情況而有所不同。

希望這是有道理的,祝你好運。