Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

JWT

  • Данные внутри JWT закодированы и подписаны, но не зашифрованы.
  • JWT не гарантирует никакой безопасности для чувствительных (sensitive) данных внутри.
  • Приложение знает секретный ключ и может выполнить тот же алгоритм подписывания к JWT, проверить эту подпись, сравнивая ее со своей собственной, вычисленной хешированием.
  • Преимущества использования JWT в сравнении с Классической схемой аутентификации, использующей сессии.
    • Подход с использованием токенов позволяет не хранить информацию обо всех выданных токенах, как при классической схеме. Когда пользователь обращается к приложению, он передает ему свой токен. Приложению остается только проверить подпись и извлечь необходимые поля из полезной нагрузки.
    • Приложению вообще не обязательно заниматься выдачей и валидацией токенов самостоятельно, зачастую для этих целей используется отдельный сервис аутентификации (IAM).
    • При использовании Отдельного сервиса аутентификации становится возможным организовать единую точку входа (SSO) в различные сервисы с одними и теми же учетными данными. Единожды пройдя процедуру аутентификации, пользователь сможет получить доступ со своим токеном К тем ресурсам, которые доверяют этому сервису аутентификации.

flow

scheme

Структура

header.payload.signature

  • Header - алгоритм подписи
  • Payload
  • Signature sign

Защита jwt

  • fingerprint браузера (иной уникальный идентификатор устройства, если это не браузер)
  • передача в GET как параметр допустима