带有wso2is的SLO,idp不包括LogoutRequests中的Issuer

时间:2014-04-08 07:12:42

标签: single-sign-on logout saml-2.0 wso2is spring-saml

我在此设置中使用wso2is作为idp和2个应用程序作为sp。其中一个应用程序使用java,spring-security-saml-extension,另一个使用php和simplesamlphp。 SSO运行良好,但我无法让SLO工作。

我所做的是:

  1. 在两个sp-s中登录
  2. 在1st sp
  3. 中注销
  4. 观看wso2日志并看到wso2发送了logoutrequest给第二个sp
  5. 第二个sp无法读取logoutrequest
  6. simplesamlphp错误消息:

    SimpleSAML_Error_BadRequest: BADREQUEST('%REASON%' => 'Received message on logout endpoint without issuer.')
    

    由idp:

    发出的saml2 LogoutRequest
    <?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/test01@domain.com</saml2:NameID>
        <saml2p:SessionIndex>5f14fc6e-1c31-42e1-b7c2-e1501bf400a8</saml2p:SessionIndex
    </saml2p:LogoutRequest>
    

    下面的saml2 SLO-Profile规范在第1294行的第4.4.4章中明确说明:

      

    &lt; Issuer&gt;元素必须存在并且必须包含唯一的元素   请求实体的标识符

    据我所知,作为Idp的wso2应该是这里的Issuer,但它不能在消息中包含它的id。

    任何关于我做错的提示?我无法想象这是一个wso2is的错误!

    http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf

2 个答案:

答案 0 :(得分:1)

正如您在规范中发现的那样,Issuer元素是必需的。 SP使用它来识别发件人。如果没有它,SP将不得不开始猜测谁发送了消息,因为它可能同时连接到许多IDP。这个问题应该报告为wso。

答案 1 :(得分:1)

这在即将发布的Identity Server 5.1版本中得到修复 https://wso2.org/jira/browse/IDENTITY-2714

我目前正在使用5.0.0并最终修补了许多这样的东西,所以我可以拥有我需要的功能。一旦你被定位,做起来并不是太糟糕。您需要修补&#39; org.wso2.carbon.identity.sso.saml&#39; “身份”中的组件&#39;碳平台的模块4.2.0 chunk11。