我在此设置中使用wso2is作为idp和2个应用程序作为sp。其中一个应用程序使用java,spring-security-saml-extension,另一个使用php和simplesamlphp。 SSO运行良好,但我无法让SLO工作。
我所做的是:
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
答案 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。