Приложение SAML с несколькими арендаторами, над которым я работаю, использует Spring-security-saml и содержит двух поставщиков услуг и один IDP (службы федерации Active Directory). Разработчик, который работал в SSO в этом приложении, решил сделать его многопользовательским, потому что это двухцелевое приложение с двумя разными интерфейсами - по существу два приложения в одном. Он предназначен для использования в браузере с открытыми двумя вкладками, поэтому один интерфейс работает на первой вкладке, а другой интерфейс работает во второй вкладке. Кажется, что все работает нормально, за исключением одного конкретного рабочего процесса:Как получить Global Logout, работающий в многопользовательском приложении SAML с использованием функции spring-security-saml?
- Откройте браузер, перейдите к знаку ADFS в страницу, и войдите в приложение с первым поставщиком услуг
- Открыть другую вкладку, перейти к знаку ADFS в странице, и выберите второй сервис-провайдер
- Выполните Глобальную Выход
файл журнала содержит ошибки, как это:
Message a598hd6ff68479a44c3495f7h4216aa not found in session 11cfm6ja982te14dxxul71iufg Received logout response is invalid InResponseToField in LogoutResponse doesn't correspond to sent message a598hd6ff68479a44c3495f7h4216aa
Я подозреваю, что это связано с тем, что один и тот же JSESSIONID-файл cookie делится между вкладками, поэтому, когда один из SP выходит из системы, он завершает связанный сеанс. Затем, когда другой SP пытается выйти из системы с тем же сеансом, он терпит неудачу, потому что сеанс исчез. Может кто-то, пожалуйста, помогите мне решить эту проблему?