Как предотвратить двойную аутентификацию разных устройств с одинаковыми учетными данными с помощью API-интерфейса?

Я работаю над проектом, в котором есть часть Android (но в будущем могут появиться и другие приложения для ОС), работающие на устройствах, которые должны работать без взаимодействия с пользователем (имеют ограниченные возможности ввода, и у каждого пользователя может быть значительное количество устройств).).

Поэтому я рассматриваю рабочий процесс с запросом API для утверждения пользователя во время первого запуска (устройство запрашивает временный токен аутентификации и код пользователя, показывает код на экране, затем пользователь вводит код из веб-интерфейса на другом устройстве) и после того, как устройство утверждения получит токен запроса с небольшим периодом TTL и токен обновления без учета времени только для токенов запроса обновления.

Проблема в том, что каждое устройство должно быть уникально идентифицировано, и я не могу понять, как предотвратить случай, когда пользователь создаст резервную копию всей системы устройства и восстановит ее на другом устройстве, а затем оба устройства будут использовать одни и те же токены, которые были выпущены ранее., Каждое устройство будет иметь длительное соединение с сервером, поэтому теоретически я могу избавиться от токенов обновления, переиздавать токен запроса при каждом соединении (и время от времени обновлять его во время сеанса работы, если срок его действия истечет) и предотвратить вторые соединения, если первое уже установлено.

Но что делать, если устройство какое-то время не подключалось (дольше, чем последний токен TTL)? Невозможно попросить пользователя повторно вводить код пользователя после каждого истечения срока действия токена. Если я сохраню токены обновления, то каждая копия исходного устройства будет запрашивать новый токен запроса на "доступ запрещен".

Спасибо, любая помощь будет благодарна.

0 ответов

Другие вопросы по тегам