Ответы пользователя по тегу JSON Web Token
  • Как продуктивно использовать JWT в приложении?

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