2016-08-30 73 views
1

我正在爲現有應用程序實現REST層。我有我的用戶ID和密碼存儲在數據庫中,我想在調用我的REST服務時對這些憑據進行身份驗證。請注意,這是一個獨立的應用程序。OAuth 2.0用於REST Web服務

經過調查,我找到了2種方法。

  • HTTPS的基本實現 - 此方法確保 傳遞的用戶名和密碼不被Man在中間攻擊中篡改。
  • 使用認證令牌(JWT) - 用戶最初將他的用戶ID 和密碼,服務器還給身份驗證token.Once用戶 有可能被用於後續 請求身份驗證令牌。
  • 使用OAuth 2.0 - 我很困惑這種方法。閱讀文檔和規範後,我發現,因爲我的應用程序 是獨立的,我需要實現授權服務器,資源 服務器等

有人問我在這裏實現OAuth的,但我不相信在這種情況下需要OAuth。我更傾向於實施JWT(令牌)

在這種情況下,OAuth確實是強制要求的。我對OAuth的理解是,當您已經擁有像Facebook/Google這樣的服務時,會使用它。

有人可以確認我的思路是否正確,如果在這種情況下需要OAuth 2.0?

+0

OAuth 2.0和JWT可以一起使用(訪問令牌可以是JWT)。不知道這是不是混淆的地方,但如果你只有一個資源需要擔心,這聽起來像JWTs可以工作? – neverendingqs

+0

或者,您被要求實施類似「使用Google登錄」的任何機會? – neverendingqs

+0

@neverendingqs該產品是做一些「xyz」任務的獨立企業產品,我爲這些任務公開了REST API。我無法擁有「使用臉書或谷歌登錄」之類的東西。我知道Oauth2和JWT可以一起使用,但我的主要困惑是OAuth 2.0是否適合這種情況?我可以使用Oauth2驗證存儲在數據庫中的用戶名和密碼。我將如何實現資源服務器,授權服務器? – Vishal

回答

0

OAuth 2.0的主要目標是允許用戶通過第三方身份驗證提供程序(例如Google,Facebook等)進行身份驗證以使用客戶端應用程序,而不會將其憑據(通常是用戶名/密碼)暴露給客戶端。

對於您的情況,如果用戶只會使用您的數據庫中的憑據對您的系統進行身份驗證,那麼實現OAuth 2.0並不會爲您增加任何實質價值。

OAuth 2.0規範確實定義了一個適用於您的情況的"Resource Owner Password Credentials grant",它適用於您的情況:用戶發送憑證,並返回訪問令牌(如果您願意,可以是JWT)。如果從管理或市場營銷的角度來看,您可以實施資源所有者密碼憑證授權,併合法地聲明您的應用程序「符合RFC6749定義的OAuth2子集」。