2012-07-10 70 views
1

我爲我的Rails應用程序發佈了一個API,並使用Oauth2保護它。我已經設置了Doorkeeper來處理Oauth2提供程序,並且它工作得很好。我可以按照教程here對一個會話進行身份驗證和設置客戶端。我想發佈一個Gem讓人們通過API訪問他們的賬戶,但我只希望他們必須驗證一次應用程序。所以,我有幾個問題:Rails API - 我需要存儲我的Oauth2訪問令牌嗎?

  1. 我是否需要存儲訪問令牌來完成此操作?大多數API要求你存儲密鑰和祕密,但不是一個令牌。
  2. 如果確實需要存儲它,我如何從該存儲值實例化一個新的令牌?
  3. 如果我需要存儲它,是否有一個問題,安全方面,有一個非到期的令牌?如果是這樣,我應該啓用刷新令牌嗎?

一般來說,API是否有更好/更標準的方法?用戶將能夠創建可發送的訂單(即涉及金錢),所以安全性在這裏是一個相當重要的問題。

回答

2

我希望我的問題得到了解決。如果情況並非如此,請告訴我。所以在這裏。 OAuth2擁有資源所有者客戶端。在你的情況下,API的用戶是客戶端。通常,他們正在向資源所有者提供服務,這涉及訪問系統上的資源。每個客戶應該得到一個客戶端密鑰和祕密,這對她來說是唯一的。他們通過守門人添加到應用程序的/ oauth/applications UI來獲得它。他們需要提供這個令牌,而不是你的圖書館。無論如何,它不能這樣做,因爲密鑰和祕密是每個客戶端唯一的。您可以閱讀here以更好地理解流程。

由於您的系統中沒有單獨的資源所有者和客戶端,因此您可能並不真的需要OAuth2。在這種情況下,您不必使用OAuth2。您可以使用簡單的令牌認證(我認爲設計有這樣的選項,更多詳細信息請參閱this question)。您也可以決定在OAuth2中使用客戶端憑據流,但在我看來,這似乎是一種矯枉過正。

+0

您已經正確理解了。客戶=資源所有者。我更關心的是安全問題。我的理解是簡單的基於令牌的身份驗證並不是那麼安全,並且人們似乎發誓Oauth。在其他需要較低安全性的應用程序中,我使用Devise的令牌認證取得了巨大成功。 – ideaoforder 2012-07-10 17:55:09

相關問題