问题描述
我想知道Spring SAML for SP的实际情况,并以ADFS作为IDP对其进行测试,因为我所期望的SLO并没有发生。
- Spring Boot版本:2.1.8.RELEASE
- Java版本:1.8
- ADFS版本:2.0
注意:我在所有不同的浏览器上都使用一个用户凭据,例如: user / user @ 123
我正在按照以下步骤实现SSO
现在在此过程中,只要我打开另一个SP并尝试使用相同的IDP登录,它就会自动登录。
对于SLO,以下是我要遵循的步骤
- 我正在通过点击
/saml/logout
上进一步处理的SAMLlogoutFilter
上的SP来发起SLO请求 - 会话无效
- 我在浏览器A上所有已登录的SP的日志中看到一个logoutRequest。
- 注销成功,现在它要求浏览器A中所有SP的凭据。
当我在不同的浏览器上尝试SSO时,它会为第一个SP上的每个浏览器询问一次凭据,其余的SP会自动登录,我可以理解,因为其他浏览器没有该用户与之进行的用户会话数据想登录,但是在所有SP从不同的浏览器登录后,我猜IDP知道连接的SP,并且据我了解,当从任何SP启动SLO时,它应该在浏览器中注销所有SP。>
但是问题是,当从浏览器A启动SLO时,我看到注销请求以及SP都被注销,只有那些在同一浏览器A上登录的请求以及其余浏览器B和C SP仍被记录进入,并且如果没有为该浏览器实例显式启动/saml/logout
,他们就不会要求提供凭据
SLO示例
SP1,SP2使用浏览器A登录
使用浏览器B登录的SP3
SP4和SP5使用浏览器C登录
从浏览器A-SP2启动SLO,然后注销SP1,但仍登录SP3,4和5
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)