2011-05-19 66 views
6

我想爲每個請求在RESTful web服務中進行驗證。我已經閱讀了關於網站OAuth的範圍。 我應該在數據庫中存儲什麼或者哪個令牌密鑰或訪問密鑰需要使用數據庫進行檢查?我有REST web服務和android應用程序來調用web服務。因此,Web服務作爲服務提供商,用戶登錄是用戶和Android應用程序,如Oauth站點中描述的消費者。所以,如果從像如何使用oAuth驗證寧靜的web服務

 
GET /username/a.jpg HTTP/1.1 
Host: localhost:8080 
Authorization: OAuth realm="http://localhost/username/a.jpg", 
    oauth_consumer_key="dpf43f3p2l4k3l03", 
    oauth_token="nnch734d00sl2jdk", 
    oauth_nonce="kllo9940pd9333jh", 
    oauth_timestamp="1191242096", 
    oauth_signature_method="HMAC-SHA1", 
    oauth_version="1.0", 
    oauth_signature="tR3%2BTy81lMeYAr%2FFid0kMTYa%2FWM%3D" 

但是,從服務器端是web服務的Android用戶請求如何檢查與數據庫或哪個鍵將使用檢查?是簽名嗎?

+0

您是否正在考慮對每個請求進行完全身份驗證,或者使用OAuth設置將在請求之間使用的會話(當然,在應用程序的範圍內)?這很重要,因爲OAuth相當昂貴,而REST往往需要*許多*請求。 OTOH,每個請求的身份驗證使客戶端更加簡單,並刪除多條攻擊路由;這是一個平衡事情的問題... – 2011-05-19 16:38:28

回答

4

請閱讀http://oauth.net/core/1.0/ ..特別是附錄A.2至A.4。 它描述了當服務無法訪問時發生的「握手」,然後將用戶重定向到身份驗證網站,然後返回到回調URL。

正如您所問,在A.4中,是的,服務會檢查簽名並使用訪問令牌進行回覆。