WSO2 - 为用户获取活动会话

WSO2 - Get active sessions for user

我们正在使用 WSO2 进行身份验证 (SAML/SSO)。

我不知道如何判断用户是否已经登录(以防止并发登录)。其他 SO 问题表明,无论使用 WSO2 IS Analytics 还是不使用,都可以知道这一点。我宁愿不必 运行 WSO2 IS Analytics(这被提到 here,但从未澄清过。此外,我可以看到 IDN_AUTH_SESSION_STORE table 正在填充并在登录期间引用,但这是使用 SESSION_ID(由 commonAuth cookie 传递)。

所以我正在寻找这个问题的直接答案:在身份验证流程中,我们如何判断给定用户是否已经登录?

在不使用分析的情况下,WSO2 身份服务器不支持开箱即用地查询用户登录的用户会话。让我解释一下原因。

当用户通过 WSO2 身份服务器进行身份验证时,将创建一个会话。这些会话存储为会话上下文对象,与 WSO2 实现中的 commonAuthId cookie 相对应。有关已登录用户的信息位于这些会话对象中。因此,如果我们想要获取特定用户的会话,我们必须查询所有活动会话并逐一匹配该用户。

作为替代方案,您可以编写一个自定义数据发布者模块,该模块保留每个用户的会话数据,然后您可以使用这些数据来防止并发登录。我有一个 blog post 为这个确切的用例写的。

希望对您有所帮助。