2016-11-30 9 views
0

Я использую расширение Spring SAML и PingFederate в качестве сервера IDP. Теперь, когда я инициирую глобальный logou t от SP (поставщика услуг), то он только аннулирует сеанс сеанса SP, а не сеанс IDP. Значит даже после глобального выхода из системы, когда я снова пытаюсь войти в систему (используя инициированный SP), тогда он позволяет напрямую войти в систему, не запрашивая учетные данные пользователя.Как включить параметр RelayState в запросе одного Выход SAML с помощью расширения Spring SAML

Я заметил, что в запросе одиночного выхода SAML отсутствует параметр relayState, хотя он присутствует в другом приложении SP, который работает нормально (демо-приложение SP, предоставляемое PingFederate). Я попытался добавить свойство relayState в файле securityContext.xml (см. Ниже фрагмент), но все же relayState не является частью параметра запроса выхода из системы.

<bean id="samlEntryPoint" class="org.springframework.security.saml.SAMLEntryPoint"> 
    <property name="defaultProfileOptions"> 
     <bean class="org.springframework.security.saml.websso.WebSSOProfileOptions"> 
      <property name="relayState" value="http://192.168.1.73:8080/adeptia"/> 
      <property name="includeScoping" value="true"/> 
     </bean> 
    </property> 
</bean> 

Пожалуйста, дайте мне знать, что использование параметра RelayState и что возможное значение и как включить его в запросе SAML выхода из системы.

ответ

0

Вы должны иметь возможность проходить состояние реле, расширяя SingleLogoutProfileImpl - метод sendLogoutRequest. Вы можете позвонить context.setRelayState(), чтобы получить значение, а затем супер, чтобы сделать остальную часть логики.

Во время фазы ответа значение реле будет доступно в processLogoutResponse, снова в объекте контекста.

Нет явной функции для отправки реле во время одиночного выхода из системы в Spring SAML.