簡體   English   中英

Oauth2提供商(門衛?)是Oauth2消費者(Devise + OmniAuth)的登錄用戶

[英]Oauth2 provider (Doorkeeper?) being an Oauth2 consumer (Devise+OmniAuth) for login

Oauth2讓我發瘋。

目前,由於Devise和OmniAuth的美麗,我的Rails應用程序通過Facebook和其他Oauth2提供商對用戶進行身份驗證。 用戶無法使用登錄名和密碼登錄。

但由於我的應用程序主要是一個API,我還希望它充當Oauth2提供程序,以保護數據。

因此,用戶使用Facebook登錄 - >我的應用程序獲取訪問令牌,然后 - >為用戶提供新的訪問令牌以訪問我的API - >我的AngularJS應用程序(或任何其他應用程序)使用此令牌訪問我的API不知道Facebook或谷歌訪問令牌。 看起來我需要使用自定義提供程序將Oauth2令牌轉發給客戶端。

我發現了門衛寶石......但我無法理解如何用Devise&Omniauth表達它。

我在這里找到了許多部分答案,但不完整。

我將感謝任何幫助,良好的教程或更完整的答案。

這是一個簡單的教程,可以幫助您入門。 感謝Andrea!
1.服務器應用程序(設計+門衛)
http://dev.mikamai.com/post/110722727899/oauth2-on-rails
2.客戶申請(Ominauth-oauth2)
http://dev.mikamai.com/post/112508735689/oauth2-on-rails-the-client-application
PS次要勘誤!
1.從服務器應用程序生成客戶端應用程序的APP_ID和SECRET_ID時 - 使用http://localhost:3000/oauth/applications/new - 輸入回調URL http://localhost:3001/auth/doorkeeper/callback
或者,如果您在錯誤后看到此內容,請返回http://localhost:3000/oauth/applications/並編輯回調網址。
我們不能使用http://localhost:3001/doorkeeper/callback因為這不是教程從客戶端應用程序使用的路徑。
2.在客戶端應用程序中包含如下所示的回調操作定義,並將to_json方法更改為as_json。

../oauth-client/app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  # Prevent CSRF attacks by raising an exception.
  # For APIs, you may want to use :null_session instead.
  protect_from_forgery with: :exception
  def authentication_callback
    auth = request.env['omniauth.auth']
    render json: auth.as_json
  end

end

干杯!

暫無
暫無

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

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