Токены: виды и срок жизни

Три понятия, без которых не обойтись в собственной аутентификации.

  • Authentication Token — токен доступа. Ключ, который приложение получает после успешного входа и предъявляет при каждом следующем запросе. Пока он действителен, пароль спрашивать не нужно.

  • Refresh Token — токен обновления. По нему выдаётся новый токен доступа, когда старый истёк, — снова вводить логин и пароль не требуется.

  • Token Expiry Time — срок действия токена доступа. Ограниченный срок и есть та самая мера безопасности: перехваченный токен становится бесполезен через час-другой.

Все три значения нужно сохранять в состоянии приложения, которое переживает перезапуск.

внимание
Учтите

Не каждый API входа возвращает все три значения — это зависит от того, как устроен ваш бэкенд. Сверяйтесь с его документацией.

Ответ API входа с токенами

1.1. Пример ответа API входа со всеми тремя значениями

Как это работает на практике

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

Дальше токен подставляется в заголовок Authorization каждого запроса, для которого нужна авторизация, — например, при запросе списка пользователей, доступного только вошедшим.

Запрос с заголовком Authorization Bearer

Запрос с токеном доступа в заголовке Authorization

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

Тогда приложение отправляет сохранённый токен обновления на специальный эндпоинт, сервер проверяет его и выдаёт новый токен доступа.

Запрос с истёкшим токеном возвращает 401

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

перевод официальной документации FlutterFlow

обновлено

⌕ ESC