我已将WSO2 Identity Server配置为IDP,并将两个应用程序配置为SP。一切正常,除了少数事情:
当我从一个应用程序注销时,另一个应用程序看不到我已注销
当我登录一个应用程序时,另一个应用程序看不到我已登录
当我检查SecurityContextHolder.getContext().getAuthentication()
后,在注销或在另一个应用程序中登录后没有任何变化。
也许我应该在每个加载网址之前调用WSO2页面/ samlsso?
我该怎么办?如何从另一个应用程序中检索该用户注销/登录?
编辑:
例如,WSO2 API Manager Store有这样的机制:
更新:
我在班级org.springframework.security.saml.websso.SingleLogoutProfileImpl
中发现了问题。当注销请求来自WSO2 IS时,对象Authentication
和SAMLCredential
为空,并且发生错误No user is logged in
,但对于仍在Spring SAML应用程序中登录的真实用户。
同样的讨论是here,但没有效果:\
答案 0 :(得分:1)
您必须验证这两个应用是否使用相同的主机名呼叫Identity Server(IS)。例如。 https://is.blahblah.com/samlsso。
IS会话基于cookie('commonAuthId'和'samlssoTokenId'cookie是特定的)。如果应用程序使用两个不同的主机名称呼叫IS,则会在IS端创建两个不同的会话。要使SSO和SLO发生,两个应用程序必须共享一个IS会话。
答案 1 :(得分:0)
我们正在使用travelocity.com和avis.com网络应用程序来测试SAML2 sso。你可以在这里找到更多细节[1]。您还可以查看此文档[2] 在Identity Server中注册两个服务提供商,然后按照1到8步骤进行操作。
[1] https://docs.wso2.com/display/IS500/Configuring+Single+Sign-On+with+SAML+2.0
[2] https://docs.wso2.com/display/IS500/Customizing+Login+Pages