我找不到包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个应用:a
和b
。
从一个应用程序注销工作正常,但是当我尝试从第二个应用程序注销时,我收到错误
[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>
所以,我有两个问题:
我们正在与WSO2 IS v.5.3.0合作。其中一个应用程序是travelocity.com,另一个是我们的应用程序,其架构类似于travelocity.com。我们正在从事多租户架构。两个应用程序(服务提供商)都在同一个租户中配置
答案 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请求来检查会话的状态,如果会话已经存在,则发送注销请求。