WSO2IS 4.6.0 не может обрабатывать SAML LogoutRequest

Сервер WSO2 Identity Server 4.6.0 не может обработать следующий запрос выхода SAML (SLO):

<saml2p:logoutrequest destination="https://idp:9443/samlsso" id="_f2a42cceb9e680b8d91fafd44d05391d27afa997" issueinstant="2014-03-26T18:18:10.842Z" version="2.0" xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol">
<saml2:issuer xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">sp</saml2:issuer>
<saml2:nameid format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress" xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">REALM/[removed_email]</saml2:nameid>
</saml2p:logoutrequest>

Это дает:

[2014-03-26 19:18:11,009] ERROR - Error Processing the Logout Request {org.wso2.carbon.identity.sso.saml.processors.LogoutRequestProcessor}
java.lang.IndexOutOfBoundsException: Index: 0
 at java.util.Collections$EmptyList.get(Collections.java:3212)
 at org.opensaml.xml.util.LazyList.get(LazyList.java:89)
[...]
Caused by: java.lang.IndexOutOfBoundsException: Index: 0
 at java.util.Collections$EmptyList.get(Collections.java:3212)
 at org.opensaml.xml.util.LazyList.get(LazyList.java:89)
 at org.opensaml.xml.util.XMLObjectChildrenList.get(XMLObjectChildrenList.java:96)
 at org.opensaml.xml.util.XMLObjectChildrenList.get(XMLObjectChildrenList.java:32)
 at org.wso2.carbon.identity.sso.saml.processors.LogoutRequestProcessor.process(LogoutRequestProcessor.java:114)
 ... 38 more

Любая идея, почему и как исправить?

ОБНОВИТЬ:

Я считаю, что это связано с элементом SessionIndex, но, согласно документации http://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf SAML, это необязательно в LogoutRequest.

2 ответа

Я не понимаю вышеупомянутое сообщение об ошибке, но, возможно, вы на правильном пути.

В опубликованном документе также говорится, что sp ДОЛЖЕН включать SessionIndex (он говорит "по крайней мере один"), см. Строку 1302

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


Да, SessionIndex является обязательным.

SessionIndex - это идентификатор сеанса, который используется для идентификации сеанса пользователя с IDP и SP для данного пользователя.

Pleae ссылается на то, как работает SAML2 Single Logout для более подробной информации.

licensed under cc by-sa 3.0 with attribution.