如何使用API​​后端使用相同的凭据防止不同设备的双重身份验证?

时间:2016-05-19 05:44:34

标签: android authentication api-authorization

我正在开发一个拥有Android部分的项目(但未来可能还有其他操作系统应用程序),这些设备必须在没有用户交互的情况下工作(输入功能有限且每个用户可能有大量设备)。

所以我在第一次运行期间考虑用户批准API请求的工作流程(设备要求临时身份验证令牌和用户代码,在屏幕上显示代码,然后用户从Web界面输入代码在批准设备获得具有小TTL周期的请求令牌和刷新永久令牌仅用于刷新请求令牌之后。

问题是必须对每个设备进行单点识别,并且我无法弄清楚当用户备份所有设备系统并将其恢复到另一个设备上时如何防止这种情况,然后两个设备都将使用相同的设备以前发行的令牌。每个设备都会有很长时间连接到服务器,所以理论上我可以摆脱刷新令牌,在每次连接时重新发出请求令牌(并且如果它将在到期时不时在工作会话中续订)和如果第一个连接已经建立,则阻止第二个连接。

但是,如果设备没有连接一段时间(长于最后一个令牌TTL)该怎么办?在每个令牌到期时,要求用户再次输入用户代码是不可能的。如果我要保留刷新令牌,那么原始设备的每个副本都会在“禁止访问”中要求新的请求令牌。

谢谢,任何帮助都会感激。

0 个答案:

没有答案