В этой настройке я использую wso2is как idp и 2 приложения как sp. одно из приложений использует java, spring-security-saml-extension, другое - php и simplesamlphp. SSO работает нормально, но я не могу заставить работать SLO.
что я делаю:
- войти в оба sp-s
- выйдите из системы на 1-м сеансе
- посмотрите журнал wso2 и увидите, что wso2is отправил запрос выхода на второй sp
- 2-й sp не может прочитать запрос выхода
Сообщение об ошибке simplesamlphp:
SimpleSAML_Error_BadRequest: BADREQUEST('%REASON%' => 'Received message on logout endpoint without issuer.')
saml2 LogoutRequest, выданный idp:
<?xml version="1.0" encoding="UTF-8"?>
<saml2p:LogoutRequest ID="ljknoccfdhjcgelcpmbicffooeokboficpggcmpi" IssueInstant="2014-04-08T06:45:19.944Z" NotOnOrAfter="2014-04-08T06:50:19.944Z" Reason="urn:oasis:names:tc:SAML:2.0:logout:user" Version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
<saml2:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity" xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">EXAMPLE.AT/[email protected]</saml2:NameID>
<saml2p:SessionIndex>5f14fc6e-1c31-42e1-b7c2-e1501bf400a8</saml2p:SessionIndex
</saml2p:LogoutRequest>
В спецификации saml2 SLO-Profile ниже четко указано в главе 4.4.4 в строке 1294:
Элемент ‹Issuer› ДОЛЖЕН присутствовать и ДОЛЖЕН содержать уникальный идентификатор запрашивающего объекта.
Насколько я понимаю, здесь wso2is действует как Idp, но он не может включить свой идентификатор в сообщение.
Любой намек на то, что я делаю не так? Я не могу представить, что это ошибка wso2is!
http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf.