TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #208 712
Всем привет, это Роза, Flutter Dev Friflex💫

Представьте: у вас есть данные, которые нужно защитить и передать через API. Как это сделать безопасно?

Здесь можно использовать JWT (JSON Web Token).

Веб-токены JSON (JWT) — это компактный и безопасный способ передачи информации между сторонами в виде JSON-объекта. JWT подписывается секретным ключом или парой ключей (RSA/ECDSA), что позволяет убедиться в целостности данных.

Почему JWT лучше логина/пароля?

✔️ Ограниченный срок жизни: пароль может «утечь» и жить вечно, а токен живет, например, всего 15 минут. Даже если его украдут, через короткое время он станет бесполезным.
✔️ Нет нагрузки на БД: проверка пароля требует похода в базу. JWT-сервер проверяет «на месте», без лишних запросов.

❕ Если вы используете «черный список» для отзыва токенов, то придётся обращаться к базе или Redis для проверки, не был ли токен отозван.

Виды JWT

▪️Access token — токен для доступа к API, живет недолго (~15 мин). При истечении срока сервер возвращает 401. По умолчанию — многоразовый
▪️ Refresh token — токен для обновления пары токенов, живет дольше (несколько дней). Используется на эндпоинте ~/auth/refresh, когда истекает срок access токена

Структура JWT

Токен состоит из 3 частей, разделенных точкой: xxxxx.yyyyy.zzzzz.

1. Header — заголовок, который хранит тип токена (JWT) и алгоритм подписи (например, HMAC SHA256)
    
2. Payload — данные о пользователе и токене. Стандартные поля:
▫️ iss — кто выдал токен (issuer)
▫️ sub — идентификатор пользователя (subject)
▫️ aud — для кого предназначен токен (audience)  
▫️ exp — время, в течение которого токен считается валидным (expiration)
▫️ iat — время создания токена (issued at)
▫️ jti — уникальный идентификатор токена (JWT ID)

3. Signature — подпись, гарантия целостности
 
⚠️ Важно: данные в payload видны всем. JWT подписывается, а не шифруется


Как JWT защищает наши данные?

JWT нельзя подделать без секретного ключа, но содержимое токена можно прочитать. Поэтому не стоит хранить там пароли или чувствительные данные.

Black-list токенов

При выходе из аккаунта или смене пароля токены нужно отзывать. Для этого используют «черный список».

При проверке сервер сначала смотрит, не попал ли токен туда, и только потом валидирует его. Если токен найден в «черном списке» → возвращается 401.

Аутентификация с JWT

Когда говорят об аутентификации с помощью JWT, то имеют в виду, как приложения подтверждают личность пользователя. Устроено это примерно таким образом:
✔️ Пользователь вводит логин и пароль
✔️ Сервер проверяет данные и, если они верны, генерирует access и refresh токены
✔️ Клиент сохраняет токены (например, в Secure Storage)
✔️ При каждом запросе к защищенному API клиент отправляет access token в заголовке  Authorization: Bearer <token>
✔️ Сервер проверяет подпись и срок действия токена
✔️ Если access token истек, клиент использует refresh token для получения новой пары токенов

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

❤️ — и в следующем посте разберем, как реализовать авторизацию во Flutter с помощью JWT
  • ❤ 12
  • 👍 4
  • 🔥 3
  • 😁 1
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →