Как поддерживать аутентификацию пользователей \ сеансы через несколько приложений? - PullRequest
0 голосов
/ 21 февраля 2011

Я использую Ruby on Rails 3 и у меня есть 3 веб-приложения:

<site_name>.com
users.<site_name>.com
resources.<site_name>.com

Уведомление : в настоящее время у меня есть приложения на том же сервере, но вВ будущем я могу выбрать их развертывание на отдельных веб-серверах.Итак, я не хотел бы использовать общее решение:

config.session_store :cookie_store, :key => '<whatever key>', :domain => :all

Учитывайте это в своем ответе.


Я хотел бы обрабатывать аутентификации пользователей \ сеансы через все этиприложения, так что пользователь должен аутентифицировать себя только один раз. То есть я хотел бы войти в систему пользователя на users.<site_name>.com и затем продолжить сеанс при просмотре других приложений.

Итак, вопрос:

  1. Что вы посоветуете для реализации этих функций?Вы пишете собственный код или используете gem (s) \ plugin (s)?Если последнее, какую комбинацию gem (s) \ plugin (s) вы посоветуете использовать?

  2. Я слышал о протоколе OAuth: в моем случае (также, если в это времяМне нужно авторизовать пользователей только через мои приложения) Правильно ли это использовать?Если да, то какие гемы \ плагины я могу использовать для этого?

Ответы [ 2 ]

1 голос
/ 21 февраля 2011

Если у вас всегда будут эти серверы на *. .com, вы можете использовать cookie, записанный в область .com, для отслеживания и аутентификации этого пользователя. Очевидно, что вы должны быть осторожны с этим и убедиться, что a) cookie передается через HTTPS (безопасный cookie) и b) что каждый сервер проверяет cookie через какой-либо веб-сервис.

Я предлагаю заглянуть в Warden и драгоценный камень warden_rails. Вдобавок к этому основному, хорошо документированному основанию аутентификации вы можете написать «стратегии» для проверки пользователей с помощью файла cookie и считывания информации о сеансе из центрального источника данных.

0 голосов
/ 21 февраля 2011

, если все они работают в одном домене, проще всего убедиться, что ваши куки действительны для всех поддоменов. в вашем производстве.rb:

config.session_store :cookie_store, :key => '<whatever key>', :domain => :all

:domain => :all делает ваши куки действительными во всех поддоменах. просто убедитесь, что ключ и ваш секретный токен сеанса одинаковы во всех приложениях.

...