簡體   English   中英

使用Devise,Doorkeeper和OAuth2令牌進行API和應用程序身份驗證

[英]API and Application authentication using Devise, Doorkeeper and OAuth2 token

我有桌面應用程序和移動應用程序。 我想為兩個“設備”使用相同的rails應用程序。 換句話說,我希望移動應用程序在桌面應用程序上請求內容。

我使用Devise進行身份驗證(電子郵件+密碼)。 我在桌面應用程序上實現了Doorkeeper,以便為我的移動應用程序生成Oauth2令牌。

這是我的問題:

我在桌面應用程序控制器中設置了before_filters以保護它們。

  • 我不確定移動應用程序應如何與Devise共享OAuth2令牌以便進行身份驗證並訪問受保護的控制器?

事實上,現在,門衛應該使用doorkeeper_for檢查我的控制器中的移動令牌doorkeeper_for :all代碼。 但要做到這一點,我必須無法設計保護before_filter :authenticate_user! ...

我是否應該在設計中保存oauth令牌?

我誤解了移動應用程序應該如何使用devise和OAuth2 protocole進行身份驗證?

謝謝

這已經過時了,但還沒有答案。

基本上Devise和Doorkeeper正在做同樣的事情,Devise使用會話進行身份驗證(如果你已啟用,則使用令牌身份驗證),而Doorkeeper使用每個請求中發送的OAuth令牌進行身份驗證。

你可能想要做的是將你的應用程序分成兩個訪問點,使用Devise進行常規桌面訪問,使用一個使用Doorkeeper的API。 僅為常規桌面控制器啟用設計路由,並僅為api控制器啟用門衛路由。

在您的API應用程序控制器中,如果是User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token ,您可以將current_user覆蓋為User.find(doorkeeper_token.resource_owner_id) if doorkeeper_token 這將與Devise認證的方式相匹配。

或者,如果您的API不必使用OAuth,則可以使用Devise的token_authenticable配置,該配置提供與OAuth的承載令牌類似的功能。

我不確定我是否理解你的問題,但門衛完全鎖定你的控制器。 如果您的控制器中有doorkeeper_for :all ,則無法通過Devise身份驗證進行訪問。

您需要一個單獨的控制器來通過OAuth2共享您的數據,例如API控制器。 然后你可以通過protocol://myapp:1234/ressource?access_token=thetoken請求數據。

那是你要的嗎? 否則請澄清:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM