Ну может я вопрос задал не правильно. Я вообще в целом хотел узнать как правильно хранить, генерировать и т.д токен. А еще лучше если кто нибудь посоветовал книгу о том как правильно реализовать api.
UserTwo,
Рабочий токен выдаётся на короткое время (минуты - десятки минут). Внутри содержится срок окончания действия токена, идентификатор пользователя, его права, какая-то информация для минимизации обращений к БД по данному пользователю. Токен на сервере не сохраняется.
Токен обновления выдаётся на длительное время (часы - дни). Внутри содержится срок окончания действия токена и идентификатор пользователя для автоматической аутентификации. Токен хранится в БД вместе с идентификатором пользователя.
1. Клиент аутентифицируется/авторизуется на сервере со своим логином/паролем.
2. Сервер генерирует пару токенов, короткоживущий рабочий и долгоживущий для обновления. Токен обновления записывается в БД.
3. Клиент присылает запрос с рабочим токеном.
4. Сервер проверяет токен.
4а. Токен действительный и неистекший, сервер отвечает на запрос.
4б. Токен действительный, но истекший, сервер сообщает о необходимости обновления токена.
4в. Токен недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
5. Клиент присылает токен обновления.
6. Сервер проверяет токен, в том числе и в БД.
6а. Токен обновления недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
6б. Токен обновления действительный, но в БД отсутствует, сервер удаляет все токены обновления этого пользователя из БД и сообщает о необходимости входа по логину/паролю (на п.1).
6в. Токен обновления действительный, но просроченный, сервер удаляет этот токен из БД и сообщает о необходимости входа по логину/паролю (на п.1).
6г. Токен обновления действительный, непросроченный, в БД присутствует. Сервер удаляет этот токен из БД, генерирует новую пару, записывает новый токен обновления в БД и отправляет токены клиенту (на п.3).