带有 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 时如何配置

使用WSO2IS登录页面登录我的应用程序

我如何针对来自身份服务器的 SAML 断言授权用户(Wso2is 5.4.0)

SAML SLO(单次注销)是不是从所有 SP(服务提供商)注销?

WSO2IS + node.js passport-saml 集成错误

WSO2IS:Log4j 1.2 安全漏洞