Токены: виды и срок жизни
Три понятия, без которых не обойтись в собственной аутентификации.
-
Authentication Token — токен доступа. Ключ, который приложение получает после успешного входа и предъявляет при каждом следующем запросе. Пока он действителен, пароль спрашивать не нужно.
-
Refresh Token — токен обновления. По нему выдаётся новый токен доступа, когда старый истёк, — снова вводить логин и пароль не требуется.
-
Token Expiry Time — срок действия токена доступа. Ограниченный срок и есть та самая мера безопасности: перехваченный токен становится бесполезен через час-другой.
Все три значения нужно сохранять в состоянии приложения, которое переживает перезапуск.
Не каждый API входа возвращает все три значения — это зависит от того, как устроен ваш бэкенд. Сверяйтесь с его документацией.

Как это работает на практике
Пользователь вводит логин и пароль, сервер их проверяет и возвращает токен доступа и токен обновления — обе строки. Токен доступа живёт недолго: скажем, час (схема 1.1).
Дальше токен подставляется в заголовок Authorization каждого запроса, для которого нужна авторизация, — например, при запросе списка пользователей, доступного только вошедшим.

Через час — или сколько указано в сроке действия — токен перестаёт работать, и следующий запрос вернёт 401 Unauthorized.
Тогда приложение отправляет сохранённый токен обновления на специальный эндпоинт, сервер проверяет его и выдаёт новый токен доступа.

Благодаря этому пользователь продолжает работать, не вводя пароль заново, а каждый отдельный токен живёт недолго.