我正在开发一个具有 Android 部分的项目(但将来也可能有其他操作系统应用程序)在必须在没有用户交互的情况下工作的设备上工作(输入能力有限,每个用户可能拥有大量设备)。
因此,我正在考虑在第一次运行期间使用 API 请求用户批准的工作流程(设备要求临时身份验证令牌和用户代码,在屏幕上显示代码,然后用户从不同设备上的 Web 界面输入代码)和在批准设备获得具有小 TTL 周期的请求令牌和仅用于刷新请求令牌的刷新时间令牌之后。
问题是每个设备都必须唯一标识,我不知道如何防止用户备份所有设备系统并将其恢复到另一台设备上的情况,然后两个设备将使用之前发布的相同令牌. 每个设备都将与服务器建立长时间的连接,因此理论上我可以摆脱刷新令牌,在每次连接时重新发出请求令牌(如果它将过期,则在工作会话期间不时更新它)和如果第一个连接已经建立,则阻止第二个连接。
但是,如果设备有一段时间没有连接(比上一个令牌 TTL 长),该怎么办?每次令牌到期时都无法要求用户再次输入用户代码。如果我要保留刷新令牌,那么原始设备的每个副本都会在“禁止访问”时要求一个新的请求令牌。
谢谢,任何帮助将不胜感激。