对于我们的移动应用程序,我们正在运行一个 API,该 API 使用 OAuth2 进行用户和客户端身份验证。我们使用的是 OAuth 的精简版本,它不使用范围或客户端授权,因为唯一使用该 API 的应用程序是由我们编写的。每个应用程序(目前为 Android 和 iOS,但计划开发 Web 应用程序和更多移动应用程序)都有自己的客户端 ID 和客户端密钥,直到最近,我们还允许每个客户端每个用户只能有一个会话。然而,当用户拥有 Android 手机和 Android 平板电脑时,这会引发问题。我们 API 现在的工作方式是,当用户在手机上登录然后尝试在平板电脑上登录时,手机会话将被删除。我们可以简单地删除每个客户端一个会话的限制,但我们也不希望每个设备多个会话(同一部手机上有 2 个会话)
我的问题是,我们如何允许每个客户端有多个会话(设备),同时仍然能够识别各个设备?(我仍然希望每台设备只进行一次会话)。
我们正在考虑在客户端身份验证时在客户端上生成唯一的哈希值,该哈希值将共享给 API 并存储在客户端和 API 上。然而,肯定已经有人遇到了这个特殊的问题,我对他们的解决方案很好奇(显然我在网上搜索时没有找到任何令人满意的答案)。
非常感谢。
一些实施细节: