2013-02-18 4 views
2

Предположим, у нас есть пользователь, который обращается к трем различным службам, используя Single sign-on. При нажатии на выключение сеанс с текущим значением Sp может быть идентифицирован и завершен.Завершение сеанса при одиночном выходе с использованием SAML

Здесь IdP несет ответственность за регистрацию пользователя из двух других служб. Вопрос в том, как будут получены и прекращены сеансы с оставшимися двумя службами?

ответ

7

Idp отправляет другим двум SPs LogoutRequest с sessionIndex пользователя для выхода из системы. Затем SPs отвечают за прекращение сеанса на своей стороне.

+0

Но этот индекс сеанса должен быть предоставлен IdP во время SSO, и база данных должна поддерживаться для каждой комбинации (SP + user). есть ли более масштабируемый способ? – Shurmajee

+3

Индекс сеанса присваивается SP от IDP при входе в систему. В SLO SP отправляет индекс сеанса пользователя. Насколько я знаю, SP должен отслеживать (индекс SAML-сессии, сеанс Java) для каждого пользователя. И IDP должен отслеживать uid и индекс сессии для каждого SP. Насколько я знаю, другого пути нет. –

+0

@ Шурмаджи - из любопытства, почему вы не приняли этот ответ? Я сражался с SAML, этот ответ оказался полезным, так как это помогло мне легко реализовать SLO. – Mjh

2

Во время SSO IDP отправляет SAML Assertion в SP, содержащий AuthnStatement. Одним из атрибутов этого AuthnStatement является SessionIndex, который идентифицирует сеанс пользователя с IDP.

Во время SLO SP отправляет запрос на выход SAML, содержащий SessionIndex, который идентифицирует сеанс пользователя (с IDP), который должен завершить IDP. IDP затем извлекает список SP, которые участвуют в текущем сеансе пользователя. IDP отправляет запрос на выход SAML для каждого из этих SP.

Для этого IDP должен отслеживать SP, которые участвуют в текущем сеансе пользователя (то есть, SP, которые получили утверждение SAML, выпущенное IDP во время текущего сеанса пользователя).

+0

Правильно, но у пользователя есть несколько активных сеансов. И выход из системы должен прекратить все сессии. Ответы на команды делают трюк, но мне было интересно, есть ли лучший способ – Shurmajee