Совместное использование сеанса между поддоменами, разработка аутентификации Завершено 401 Несанкционировано
У меня есть 2 приложения ruby rails, каждое из которых имеет свой гениальный элемент для аутентификации, моя цель - реализовать простой SSO (единый выход) с использованием общих сеансов.
один из них с public.admin.com
а другой с private.admin.com
Я использую следующие конфигурации:
session_store.rb
Rails.application.config.session_store :cookie_store, key: '_shared_admin_session', domain: '.admin.com', tld_length: 2
конфиг /secrets.yml
Я тоже использую то же самое secret_key_base
значение в обоих приложениях
devise.rb
config.stretches = 1
config.pepper = ''
application.rb
config.action_dispatch.cookies_serializer = :hybrid
Я могу войти для одного из них, и сессия открыта, как только я открываю другой домен Completed 401 Unauthorized
возвращается, и открытая сессия закрывается и выходит из первого домена.
Я пробовал с использованием domain: 'admin.com'
, domain: :all
,а также ..session_store :redis_store..
, но результат всегда один и тот же.
Может кто-нибудь, пожалуйста, помогите мне найти проблему или предложить лучшее решение, я буду благодарен.
2 ответа
Если вы хотите разделить сессию между доменами, вам нужно отредактировать файл config/initializers/session_store.rb так, чтобы он выглядел следующим образом:
APPNAMEGOESHERE::Application.config.session_store :cookie_store, :key => '_tourlyapp_session', :domain => "your_domain_name.com"
Хитрость здесь в том, :domain
вариант. Это устанавливает уровень TLD (домен верхнего уровня) и сообщает Rails, как долго домен. Здесь вы должны следить за тем, чтобы, если вы установите domain: :all
Например, рекомендуется в некоторых местах, он просто не будет работать, если вы не используете localhost.: по умолчанию длина TLD равна 1, что означает, что если вы тестируете с помощью Pow (myapp.dev), оно также не будет работать, поскольку это TLD длины 2.
Я надеюсь, что это поможет вам
Я нашел проблему, это было просто.
проблема была в использовании 2 разных БД, после объединения административных таблиц все работало нормально.