我们正在使用WSO2 IS作为我们的企业标识平台。出于安全原因,我们的一个租户必须限制每个用户的并发会话数 预期的行为如下:当用户登录时,如果他/她之前已经登录并且会话仍然有效,则新会话必须覆盖前一个会话,因此登录结束正常并且他/她退出从第一个设备/浏览器。总结:新会话总是使旧会话无效 我一直在研究这样的网站或http://soasecurity.org/寻找答案,但我找不到任何答案 我认为我需要在用户存储中存储WSO2 IS会话ID(在commonauthId cookie中存在并存储在会话缓存/持久性存储中),因此我可以检查当前用户会话是什么并注销用户如果cookie ID和商店ID不匹配。但有两个主要问题:
提前致谢。
答案 0 :(得分:0)
WSO2身份服务器实际上并不关心打开会话的数量。恕我直言,身份服务器不是检查开放会话的最佳执行点。一旦用户已经登录,您就无法对框架进行太多控制,并返回用户断言(或Oauth令牌)。
我在哪里存储用户会话ID?
如果您enable the session persistence,会话信息(用户会话,saml SP会话......)将存储在数据库中。但是 - 它是供内部使用的。如果用户注销或关闭浏览器,则记录可能仍在那里。没有关于用户网络会话的信息。
只是一个提示 - 我们使用VPN代理(Juniper SA作为SP)和WSO2IS作为IdP来强制执行唯一的用户会话(对于新会话,旧会话无效)。
玩得开心