2016-04-26 5 views
1

У меня есть приложение Grails с Spring SAML и WSO2 IS как IdP.Перенаправить пользователя на страницу входа после таймаута сеанса SP

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

Но после того, как мы внедрили SSO, этот механизм больше не работает - после перезагрузки сеансового тайм-аута, и IDP повторно аутентифицирует его автоматически.

Как я понимаю, есть две сессии: IdP и SP. И когда сеанс SP недействителен, IDP все еще жив.

Возможно ли перенаправить пользователя на страницу входа в систему единого входа после таймаута сеанса? Есть ли некоторые рекомендации по обработке тайм-аута сеанса с использованием единого входа?

+0

Какая версия сервера идентификации вы используете? Вы создали SP на сервере идентификации с помощью консоли управления Identity Server? –

+0

@ChamilaWijayarathna Я использую V4.6.0. Да, SP был зарегистрирован на странице «Регистрация нового поставщика услуг» с помощью консоли управления IS –

ответ

0

Похоже, это невозможное для синхронизации сессий с использованием единого входа, так что я решил установить такое же значение для SP сессии и IdP сессии. Это не идеальное решение, но по крайней мере поведение похоже на ожидаемое.

1

Для того, чтобы этот сценарий работал, ваш SP должен выдать запрос на выход. Spring SAML поддерживает одиночные и локальные выходы. В случае локального выхода из системы ни один из других сеансов SP не затрагивается, а IDP, только текущий сеанс SP выходит из системы. В случае Single Logout IDP инструктирует все SPs прекратить сеанс, а затем сеанс IDP также завершается. В любом случае должен быть запрос, исходящий из вашего SP, как время сеанса.

Более подробная информация доступна здесь: http://docs.spring.io/autorepo/docs/spring-security-saml/1.0.x-SNAPSHOT/reference/htmlsingle/#configuration-logout

+0

, но что, если будет несколько SP? не является странным тот факт, что после таймаута сеанса пользователь не аутентифицирован и должен быть перенаправлен на страницу входа в SSO, но в других SP этот пользователь аутентифицирован? Разве это не нарушает идею единого входа? –

+0

@TarasKohut Посмотрите на response.assertion.authnStatement.sessionNotOnOfAfter, но все это зависит от вашей реализации SP. С точки зрения SP вам может потребоваться конкретное указание IdP выполнить выход из системы. Если это глобальный выход из системы, то IdP уведомит другие SP, которые им также необходимы для завершения их сеанса. – Nikolai

+0

Я пробовал ваше решение, но на самом деле после того, как SP запрашивает локальный выход из системы, пользователь перенаправляется на страницу входа в систему, и поскольку сеанс SSO жив, SP повторно проверяется. Похоже, что невозможно переадресовать на страницу входа без автоматического входа в систему до тех пор, пока не будет существовать глобальная сессия. Или я чего-то не хватает? –

Смежные вопросы