Я работаю над интеграцией единого входа в набор веб-приложений.
В приложениях используется однократный выход из системы «на переднем канале», который осуществляется через набор перенаправлений с SP на Idp и обратно через все SP. Одиночный выход из системы 'Front channel' имеет ограничение: когда один из SP не может выйти из системы, весь процесс Single Logout считается неудачным, а другие SP входят в систему.
Предположим, что 1 из SP имеет ситуацию тайм-аута сеанса. В этом случае, когда цепочка перенаправлений приходит к нему для выхода из системы, у SP нет информации о том, какие данные отправлять для однократного выхода из системы, и поэтому весь процесс завершается неудачно. Причина в том, что информация, необходимая для успешного однократного выхода из системы, хранилась в самом сеансе.
Как правильно настроить единый выход из системы в случае тайм-аута сеанса у одного из поставщиков услуг?
Некоторые технические подробности об используемых инструментах:
- протокол: SAML 2.0 (хотя можно использовать OpenId Connect,
так что вопрос довольно общий)
- Idp: Keycloak
- Java-библиотека для единого входа: pac4j