WSO2 是。为多个应用程序打包 org.wso2.identity.sso 和 SSO SLO

WSO2 IS. package org.wso2.identity.sso and SSO SLO fro more than one application

我找不到包 org.wso2.carbon.identity.sso.saml 的来源。 在 github 存储库 wso2-attic/carbon-identity 中有这些 类,但请注意,该存储库不再用于开发,我发现有 2 links:

https://github.com/wso2/identity-framework    
https://github.com/wso2-extensions?utf8=%E2%9C%93&query=identity

但我没有从包 org.wso2.carbon.identity.sso.saml.

中找到任何 类

我在 2 个应用程序的 SSO SLO 方面遇到了一些问题:

我登录了 2 个应用程序:ab

从一个应用程序注销正常,但是当我尝试从第二个应用程序注销时,出现错误 [4] [是]错误 {org.wso2.carbon.identity.sso.saml.processors.SPInitLogoutRequestProcessor} - ssoTokenId cookie not found in the logout request 和 html:

SAML 2.0 based Single Sign-On
Error when processing the authentication request!
Please try login again. 

SAML 注销响应有 link

https://test2-sso2.auth.test.vu.lt:9443/authenticationendpoint/samlsso_notification.do?status=Error+when+processing+the+authentication+request%21&statusMsg=Please+try+login+again.

和 SAML 响应参数:

<saml2p:LogoutResponse Destination="https://test2-wso2.auth.test.vu.lt:9443/samlsso"
                       ID="_9cb47e1d90276bcc53d4b110d3573b82"
                       InResponseTo="fgehcpnbagimhhcacbaanopameodckepmopaoaek"
                       IssueInstant="2017-08-31T11:09:43.403Z"
                       Version="2.0"
                       xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
                       >
    <saml2:Issuer Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity"
                  xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
                  >test2-wso2</saml2:Issuer>
    <saml2p:Status>
        <saml2p:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Requester" />
        <saml2p:StatusMessage>Session was already Expired</saml2p:StatusMessage>
    </saml2p:Status>

</saml2p:LogoutResponse>

那么,我有两个问题:

我们正在使用 WSO2 IS v.5.3.0。其中一个应用程序是 travelocity.com,另一个是我们的应用程序,其架构类似于 travelocity.com。我们在多租户架构中工作。两个应用程序(服务提供商)都在同一个租户中配置

我假设您正在寻找 SPInitLogoutRequestProcessor。您可以在 [1] 找到它。对于 IS 5.3.0,SAML 组件相关的开发发生在 5.3.x 分支。

关于您对 SLO 的查询;当您为单点注销配置了 2 个应用程序并从一个应用程序注销时,Identity Server 会使用户的身份验证会话无效,并向其他会话参与者(在本例中为 App 2)发送反向通道 SAML 注销请求。因此,第二个应用程序应该在收到来自 IS 的注销请求后使其用户会话无效。

您看到的错误应该是由于 IS 无法为注销请求找到有效的经过身份验证的会话(因为该会话已被删除)。 [2] 详细解释了 IS 中单点注销是如何发生的。

您可以采取的另一种方法是在发送注销请求之前检查 IDP 端是否存在经过身份验证的会话。您可以使用被动 SAML 请求来检查会话的状态,如果会话已经存在,则发送注销请求。