【问题标题】:Limit number of concurrent sessions per user using IdentityServer4使用 IdentityServer4 限制每个用户的并发会话数
【发布时间】:2017-12-01 14:26:13
【问题描述】:

我们有几个用户,我们可能会与其他用户共享他们的用户帐户。我们正在考虑在 IdentityServer4 中添加功能,以限制用户可以拥有的并发会话数以防止这种行为。

这不会阻止用户在白天不时共享用户帐户,但我们至少可以停止同时使用我们的系统。

我们正在考虑计算每个用户帐户使用的刷新令牌的数量,如果超过某个限制,则会删除该用户最旧的刷新令牌和访问令牌,直到刷新令牌的数量等于允许的数量限制。

关于如何使用 IdentityServer4 实现此功能的任何意见?我们还想告知用户为什么参考令牌被删除从而导致注销。

【问题讨论】:

    标签: identityserver4


    【解决方案1】:

    从逻辑上讲,当用户超过其并发会话限制时,它仍然应该能够进行身份验证,因此我会投票反对将身份服务器视为此类功能的正确位置。

    当达到限制时,您打算向用户返回什么?您无权访问此资源?这听起来不对。

    我建议在资源本身中应用此类功能,使用您的应用程序逻辑计算当前会话数,然后将用户重定向到告知已超出限制的页面。

    更新:

    查看这个 Github 讨论,其中 IdentityServer 贡献了一个相对相似的查询。 https://github.com/IdentityServer/IdentityServer4/issues/736

    【讨论】:

    • 在 IdSrv4 中这样做的好处是它是集中的。我们有 OIDC 客户端,我们无法轻松实现此会话限制逻辑。
    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 2015-08-11
    • 2015-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-06
    • 2011-08-29
    相关资源
    最近更新 更多