Обнаружение воспроизведения SAML - PullRequest
0 голосов
/ 25 октября 2018

У нас есть веб-приложение на основе Java, которое использует SAML 2.0 для единого входа.В рамках единого входа мы также внедрили единый выход.Может кто-нибудь поделится пожалуйста информацией о том, как исправить приведенную ниже проблему

  • Пользователь заходит в IDP (app1)
  • Пользователь нажимает на ссылку на SP (app2)
  • Пользователь выходит из IDP.SP получает запрос на выход из системы, и сеанс становится недействительным
  • Пользователь обновляет браузер, в котором открыт SP (app2), и исходный запрос IDP повторно отправляется.SP обрабатывает этот запрос, как будто он поступил от IDP.При этом пользователь все еще может перемещаться / использовать app2, даже если он вышел из IDP.

Я думаю, что лучшее решение - вернуться в IDP и проверить, есть ли сеанс (на основеSAML SessionIndex действителен), но не уверен, как мы можем это сделать.Обратите внимание, что обновление браузера работает только в пределах окна, указанного NotBefore и NotOnOrAfter.Если пользователь пытается выполнить обновление из этого окна, у нас есть логика, которая отклоняет запрос / ответ.

1 Ответ

0 голосов
/ 25 октября 2018

SP также должен проверять воспроизведение подтверждения SAML.Каждое утверждение SAML включает уникальный идентификатор.Ваш SP должен отслеживать их до истечения срока их действия (т.е. до NotOnOrAfter).Когда вы получаете подтверждение SAML, если ваш SP уже видел идентификатор, утверждение SAML должно быть отклонено.

...