У меня есть 3 веб-приложения - A, B и C. Приложение A содержит базу данных пользователей. При доступе к приложению B и приложению C я хотел бы, чтобы пользователь был перенаправлен в приложение A для аутентификации, а затем возвращен обратно в любое приложение, к которому он пытался получить доступ. В то же время они должны быть авторизованы во всех приложениях. Если у кого-то нет лучшего решения, я выбрал комбинированное решение OmniAuth/Devise, как описано в этот пост в блоге.
Я развил и обновил до Rais 3.1.2 образец приложения A и образец приложения B/C.
Приложение А — поставщик — https://github.com/RobZolkos/sso-devise-omniauth-provider
Приложение B/C — клиент — https://github.com/RobZolkos/sso-devise-omniauth-client
Эти примеры приложений работают, и меня перенаправляют в приложение провайдера для аутентификации, но, похоже, оно не проходит аутентификацию. Я прикрепил журнал здесь. Провайдер, похоже, выполняет действия, но затем в строке 26 журнала вы можете увидеть, что, похоже, возникла проблема с аутентификацией.
Я упустил что-то простое, чтобы эти примеры приложений работали?
warden.session
в журнал (в приложении провайдера), я получу исключениеWarden::NotAuthenticated
. То есть фильтрauthenticate_user!
перед возвращает false, и поэтому он не работает. - person Frost   schedule 01.12.2011