使用IdentityServer4限制每个用户的并发会话的数量



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

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

我们正在考虑计算每个用户帐户使用的刷新令牌的数量,如果它们超过一定限制,则将最古老的刷新令牌和访问令牌删除,为该用户删除,直到允许的刷新代币的数量等于允许的数量限制。

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

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

您打算在达到限制时返回用户?您无权访问此资源?这听起来不正确。

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

更新:

检查此GitHub讨论,其中身份服务器对相对相似的查询做出了贡献。https://github.com/indistityserver/indistityserver4/issues/736

最新更新