аутентифицировать api винограда с привратником

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

Как я могу добавить токен в HttpRequest и защитить с его помощью Grape 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. приложение \ контроллеры \ api \ base.rb

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

Я установил свой контроллер проектов в свой базовый контроллер V1 app \ controllers \ api \ v1 \ base.rb

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

А это мой проектcontroller app \ 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.


person Sander Obdeijn    schedule 20.10.2014    source источник


Ответы (2)


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

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

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

person Tom Hert    schedule 20.10.2014
comment
Я смотрю на winebouncer, но думаю, что у меня неправильный формат HttpRequest. Я все время получаю ошибку 500. Вы знаете правильный формат? - person Sander Obdeijn; 22.10.2014
comment
@SanderObdeijn, не могли бы вы предоставить дополнительную информацию? Понравились некоторые части реализации и точная ошибка, которую вы получаете? - person Tom Hert; 22.10.2014
comment
Я не мог заставить wine_bouncer работать. Но привратник за виноградом работает отлично. - person Sander Obdeijn; 15.11.2014

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

person Antek Drzewiecki    schedule 28.11.2014