Я интегрирую Rails с системой SSO моей компании. На моем сервере установлен и включен модуль SiteMinder Apache.
Приложение Rails проверяет объект запроса в фильтре before_filter, чтобы определить, прошел ли уже пользователь аутентификацию с помощью SSO. Найдя нужную переменную, мое приложение затем сопоставляет идентификатор пользователя, возвращенный из SSO, с учетной записью пользователя внутри себя и аутентифицирует этого пользователя (аутентификация покоя с хранилищем сеансов ActiveRecord).
Моя проблема заключается в следующем: после успешного входа в систему с использованием этого метода, после нескольких страниц, которые стоит щелкнуть, я внезапно теряю свою сессию Rails и в результате повторно аутентифицируюсь своим приложением (я возвращаюсь к домашнюю страницу).
Это не результат защиты CSRF, так как:
- Происходит как в тестовой, так и в производственной среде моего приложения (по умолчанию она отключена в тестовой среде), и
- Происходит, казалось бы, случайно, независимо от типа запроса: запросы AJAX, GET и POST привели к такому поведению.
Даже если я отключу код, который автоматически регистрирует пользователя на основе его идентификатора SSO, и просто перейду на старую страницу входа в свое приложение (после аутентификации с помощью SSO), я замечаю, что время от времени появляется новая появляется значение идентификатора сеанса в файле cookie моего браузера.
Таким образом, сеанс сбрасывается, когда у меня включен модуль Apache SSO. В противном случае все прекрасно и денди. Что дает?