带有 wso2is 的 SLO,idp 不包括 LogoutRequests 中的颁发者
Posted
技术标签:
【中文标题】带有 wso2is 的 SLO,idp 不包括 LogoutRequests 中的颁发者【英文标题】:SLO with wso2is, idp not including Issuer in LogoutRequests 【发布时间】:2014-05-20 17:39:51 【问题描述】:在此设置中,我使用 wso2is 作为 idp 和 2 个应用程序作为 sp。其中一个应用程序使用 java、spring-security-saml-extension,另一个使用 php 和 simplesamlphp。 SSO 运行良好,但我无法使 SLO 正常运行。
我要做的是:
-
在两个 sp-s 中登录
在第一个 sp 中注销
观察 wso2 日志并看到 wso2 向第二个 sp 发送了注销请求
第二个 sp 读取 logoutrequest 失败
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 规范在第 4.4.4 章第 1294 行明确说明:
元素必须存在并且必须包含唯一的 请求实体的标识符
据我了解,作为 Idp 的 wso2 应该是此处的颁发者,但它未能在消息中包含其 id。
关于我做错了什么的任何提示?我无法想象这是一个 wso2is 错误!
http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf
【问题讨论】:
我这里也有同样的问题。我使用 2 个 PHP 应用程序(使用 onelogin php-saml)和 WSO2 IS 5.0.0 作为身份提供者成功配置了 SSO。 IDP 发送 LogoutRequest 时,不包括 Issuer。您是否设法为此找到解决方案? 【参考方案1】:正如您在规范中发现的,Issuer 元素是强制性的。 SP 使用它来识别发件人。如果没有它,SP 将不得不开始猜测是谁发送了消息,因为它可能同时连接到许多 IDP。该问题应作为错误报告给 wso。
【讨论】:
【参考方案2】:这在即将发布的 Identity Server 5.1 版本中得到修复。https://wso2.org/jira/browse/IDENTITY-2714
我目前正在使用 5.0.0 并最终修补了诸如此类的许多内容,因此我可以获得所需的功能。一旦你有了方向感,做起来还不错。您需要修补 carbon 平台 4.2.0 块 11 的 'identity' 模块中的 'org.wso2.carbon.identity.sso.saml' 组件。
【讨论】:
以上是关于带有 wso2is 的 SLO,idp 不包括 LogoutRequests 中的颁发者的主要内容,如果未能解决你的问题,请参考以下文章
IDP 初始化 SSO,当没有 PrivateKey 的 pwd 时如何配置
我如何针对来自身份服务器的 SAML 断言授权用户(Wso2is 5.4.0)
SAML SLO(单次注销)是不是从所有 SP(服务提供商)注销?