Аутентифицировать виноградный API с привратником

В настоящее время я настроил Devise,Doorkeeper и виноград в своем приложении рельсов. Devise и Doorkeeper настроены таким образом, что я могу зарегистрироваться и войти в Devise на веб-сайте, а Doorkeeper предоставляет конечные точки oAuth, которые могут создавать токены.

Как я могу добавить токен в HttpRequest и защитить с его помощью API винограда?

Редактировать: Итак, я попытался реализовать реализацию Winebouncer, которую предложил Том Херт. Я следовал инструкциям на https://github.com/antek-drzewiecki/wine_bouncer

Я установил драгоценный камень. Я определил config/initializers/wine_bouncer.rb следующим образом.

WineBouncer.configure do |config|
  config.auth_strategy = :default

  config.define_resource_owner do
    User.find(doorkeeper_access_token.resource_owner_id) if doorkeeper_access_token
  end
end

Я зарегистрировал Winebouncer в качестве промежуточного ПО в винограде в моем базовом контроллере API. Приложение \ Контроллеры \ апи \ base.rb

module API
  class Base < Grape::API
    mount API::V1::Base
    use ::WineBouncer::OAuth2
  end
end

Я смонтировал контроллер проектов в приложении базового контроллера V1 \controllers\api\v1\base.rb

module API
  module V1
    class Base < Grape::API
      mount API::V1::Projects
    end
  end
end

И это мое приложение projects controller \controllers\api\v1\projects.rb

module API
  module V1
    class Projects < Grape::API
      version 'v1'
      format :json

      resource :projects do
        desc "Return list of projects" , auth: { scopes: [] }
        get do
          Project.all
        end
      end
    end
  end
end

Честно говоря, я еще не знаю, как предполагается, что ", auth: { scopes: [] }" в описании. И как добавить токен в запрос, но я ожидаю, что мой запрос будет заблокирован, когда токен не будет добавлен. Но запрос все еще производит данные JSON.

2 ответа

Решение

Я нашел довольно интересный код здесь: https://github.com/fuCtor/grape-doorkeeper Кажется, он все еще поддерживается. Но я думаю, что это хорошо, просто чтобы понять, что там происходит.

Я бы порекомендовал это: https://github.com/antek-drzewiecki/wine_bouncer Как сказано на странице:

Защитите свой драгоценный виноградный API с Doorkeeper. WineBouncer использует минимальные модификации, чтобы волшебство произошло.

obedeijn, я только что заметил ваш вопрос по stackru. WineBouncer работает так же, как привратник, он ищет заголовок Authorizations с "Bearer x", где x - токен.

Другие вопросы по тегам