Rails двуногого OAuth-провайдера? - PullRequest
5 голосов
/ 05 мая 2010

У меня есть приложение rails 2.3.5 с API, которое я хочу защитить.

Нет пользователя - это приложение для веб-сервиса в стиле приложения (больше похожее на сервис Amazon, чем на Facebook), и поэтому я хотел бы реализовать его, используя двуногий подход OAuth.

Я пытался использовать реализацию сервера oauth-plugin для начала:

http://github.com/pelle/oauth-plugin

... но он построен с ожиданием трехстороннего (потока веб-перенаправления) oauth.

Прежде чем я углублюсь в внесение изменений в него, чтобы поддержать двуногих, я хотел посмотреть, есть ли более простой способ, или у кого-то есть лучший подход к приложению rails для реализации в качестве двуногого поставщика OAuth.

Ответы [ 2 ]

8 голосов
/ 28 февраля 2011

Раньше единственным хорошим ответом было взломать плагин oauth, чтобы получить это подмножество взаимодействия oauth. С тех пор, oauth-плагин был реорганизован, и теперь вы можете использовать его прямо, просто добавив правильный тип фильтра аутентификации на ваш контроллер:

class ApiController < ApplicationController

    include OAuth::Controllers::ApplicationControllerMethods

    oauthenticate :strategies => :two_legged, :interactive => false

    # ...

end
5 голосов
/ 05 мая 2010

На данный момент я не знаю никаких альтернатив oauth-плагину, хотя он определенно становится длинным и готовым для замены. Моя рекомендация состоит в том, чтобы сгенерировать oauth-сервер из oauth-plugin, затем извлечь зависимости из плагина (которые представляют собой всего лишь пару модулей) и очистить плагин. Затем настройте все под свои нужды. Двухсторонний oauth не должен быть большой проблемой, так как он в любом случае проще, чем 3-сторонний, и мне кажется, что oauth-plugin в наши дни не может использоваться без значительных изменений.

В любом случае мясо OAuth уже давно извлечено в базовый камень oauth, поэтому плагин oauth находится в подвешенном состоянии. Архитектура делает некоторые жесткие предположения о том, какую систему аутентификации вы используете, и сгенерированный код датирован. Поэтому для меня oauth-plugin служит скорее примером того, как все соединить, а не чем-то, что большинство сайтов хотели бы использовать «из коробки».

...