WSO2是。从多个应用程序中包装org.wso2.identity.sso和SSO SLO

时间:2017-08-31 11:28:31

标签: wso2 wso2is

我找不到包org.wso2.carbon.identity.sso.saml的源代码。 在github存储库wso2-attic / carbon-identity中有这些类,但需要注意的是,该存储库不再用于开发,我发现有2个链接:

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] [IS]错误{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退出响应有链接

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>

所以,我有两个问题:

  • 我可以在包org.wso2.carbon.identity.sso.saml中找到类;
  • 也许有人可以帮我解决我的SSO SLO问题?

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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