使用Stormpath跟踪来自同一用户的多个登录

时间:2016-09-09 00:23:53

标签: rest jwt stormpath multiple-login

我正在开发一个在服务器端使用Stormpath进行身份验证和授权的移动应用程序。我需要支持同一个用户登录多个设备,但我希望能够跟踪它并限制它,如果我愿意的话。

我的应用程序目前使用Stormpath使用电子邮件/密码或MDN /密码登录用户,成功登录后返回一个JWT令牌,用于对服务器的API访问。

我正在考虑以下方法:

  • 在用户的帐户中保留会话列表。每次用户登录时,都会添加一个新条目,其中包含device_id和JWT。当用户注销时,该条目将被删除或标记为无效。
  • 当用户尝试登录其他设备时,如果我想限制只有一个活动设备,我会将其他条目设置为禁用并使JWT到期,以便应用程序可以检测到它并再次需要登录。
  • 如果我想将用户限制为最多n个会话,我可以只计算条目并强制用户在允许她/他登录新设备之前签署其他会话

这是一个好方法吗?有没有更好的方法呢?这种方法有什么问题?

1 个答案:

答案 0 :(得分:1)

我在Stormpath的移动SDK上工作。您可以使用我们必须执行的访问/刷新令牌功能。

  • 每次用户登录时,都会创建一个访问和刷新令牌。当用户注销时,将删除刷新令牌以及访问令牌。
  • 当用户尝试登录其他设备时,如果您只想限制为一个有效设备,则可以删除所有其他访问权限。刷新令牌。
  • 如果您想将用户限制为最多n个会话,我可以只计算条目并强制用户删除其中一个刷新令牌,然后再允许她/他在新设备上登录。然后,您将浏览访问令牌,并删除匹配“rti”(刷新令牌ID)
  • 的那些令牌。

关于实施这一点的几点说明:

  • 如果您正在使用Stormpath Framework集成,则默认是在本地验证访问令牌(而不是将其发送到Stormpath进行验证)。这是因为它们具有可由SDK验证的签名。但是,要注销用户,您必须将其设置为远程验证,或使用短访问令牌生命周期(并使用刷新令牌来控制每个“会话”)
  • 刷新令牌无法存储“customData”,因此您必须在帐户的customData或您自己的数据库中维护有关刷新令牌的元数据。
  • 或者,您可以为每个用户“创建”API密钥,并为每个用户使用该密钥而不是会话。您可以使用API​​密钥名称或描述属性来跟踪用户从/等登录的位置。