Проблема, с которой я сталкиваюсь, обсуждалась несколько раз на этом сайте, однако большинство сообщений довольно старые. Вот something similar к тому, что я испытываю. Я использую WSO2 IS 5.2 в качестве моего IdP, и у меня есть 2 веб-приложения на основе Java, размещенные на разностных серверах, которые участвуют в SSO. Каждый webapp (SP) реализовал расширение Spring-SAML. Single Sign-on работает отлично, но Single Logout работает только частично. Вот тестовый пример:Вопрос о выпуске WSO2 и Spring SAML
- Доступ к защищенному ресурсов на webapp1
- Войти Страница из IDP (WSO2) представлен и пользователь входит в систему
- Secure ресурса из webapp1 представлен
- доступа к защищенному ресурсу на webapp2 запрос
- SAML отправляется IDP, IDP отвечает и проверка подлинности пользователя
- Secure ресурса из webapp2 представлен, конец SSO
- в itiate одного отключиться от webapp2
- webapp2 отправить SAML запроса (через браузер) к IDP и ответ SAML возвращаются
- Пользователь вышел локально на webapp2 и IDP сеанс завершается
- МВА, непосредственно отправляет запрос выхода из системы webapp1 (тип обратного канала)
- запрос Выход не в webapp1 (журнал указывают SamlStatusException: ни один пользователь не вошел в систему)
Таким образом, конечный результат в том, что я до сих пор локальный сеанс на webapp1. Если я изменю порядок и инициирую SLO из webapp1, то будет выходить webapp1, и локальная сессия webapp2 будет продолжать существовать. Сервер WSO2 может определить участника второго сеанса во время SLO, однако HTTP-запрос, отправленный из Idp на участника 2-го сеанса, не имеет контекста безопасности Spring. Это был бы HTTP-запрос без учета состояния, чтобы не было зарегистрированного пользователя. Вот почему я считаю, что он терпит неудачу.
Я нашел this обсуждение. Его около 2 лет. Есть что-то новое в этом вопросе? Возможно, шаг конфигурации пропустил меня на WSO2 или в конфигурации Spring-saml.
Вот соответствующая часть моих метаданных SP:
<md:SingleLogoutService Location="https://tpap10-wwwdev04.arbfile.org:443/webapp/saml/SingleLogout" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
<md:SingleLogoutService Location="https://tpap10-wwwdev04.arbfile.org:443/webapp/saml/SingleLogout" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"/>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:persistent</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified</md:NameIDFormat>
<md:NameIDFormat>urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName</md:NameIDFormat>
<md:AssertionConsumerService Location="https://tpap10-wwwdev04.arbfile.org:443/webapp/saml/SSO" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" isDefault="true" index="0"/>
<md:AssertionConsumerService Location="https://tpap10-wwwdev04.arbfile.org:443/webapp/saml/SSO" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact" index="1"/>
Некоторой соответствующие Спринг-SAML конфигурация на SP:
<bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter">
<constructor-arg>
<bean class="org.springframework.security.saml.metadata.MetadataGenerator">
<property name="entityId" value="urn:webapp1:mycity"/>
<property name="entityBaseURL" value="https://wwwdev04.domain.org:443/webapp" />
<property name="extendedMetadata">
<bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
<!-- <property name="signMetadata" value="false"/> -->
<property name="idpDiscoveryEnabled" value="false"/>
</bean>
</property>
</bean>
</constructor-arg>
</bean>
Привет, Владимир, я вижу, что вы весной эксперт. Не могли бы вы помочь мне с моей проблемой? – bob9123