WSO2IS 4.6.0无法处理SAML LogoutRequest

时间:2014-03-26 18:27:27

标签: wso2 saml-2.0 wso2is

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/email@example.com</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 个答案:

答案 0 :(得分:0)

我不明白上述错误信息,但也许你走在正确的轨道上。

在你发布的文件中也说sp必须包含一个SessionIndex(它说“至少有一个”),见第1302行

毕竟,如果你不包括会话索引,idp应该如何知道要终止的会话以及应该通知哪些会话参与者注销?

答案 1 :(得分:0)

是的,SessionIndex是必须的。

SessionIndex - 这是会话标识符,用于标识给定用户的IDP和SP的用户会话。

请参阅How SAML2 Single Logout Works了解更多详情。