🧨 Немного про JWT токен
JWT часто воспринимают как зашифрованный ключ для доступа к API. Но еа практике это скорее подписанный JSON, упакованный в три части: header, payload, signature.
Первые две кодируются Base64URL. Берём обычный JWT и декодируем:
"{"alg":"HS256","typ":"JWT"}"
"{"sub":"12345","role":"admin","exp":1710086400}"
Всё содержимое перед глазами.
🔐 Зачем тогда нужна подпись?
Ключ используется для проверки подписи. Сервер убеждается, что токен выпустил доверенный источник и его содержимое не изменяли.
Поэтому пароль или API ключ внутри JWT хранить бессмысленно. Подпись их не спрячeт. Для шифрования существует JWE.
⚠️ Проверка токена
Серверу мало убедиться, что подпись правильная. Нужно проверить:
🔹 кто выпустил токен: "iss";
🔹 для какого сервиса он предназначен: "aud";
🔹 кому он выдан: "sub";
🔹 когда начинает и заканчивает действовать: "nbf", "iat", "exp";
🔹 какие права даёт: "scope", роли;
🔹 какой алгоритм разрешён сервером.
Вполне реальна ситуация, когда токен криптографически валиден, но использовать его здесь вообще не должны были.
JWT не опасен сам по себе. Опасна уверенность, что валидная подпись означает валидный доступ.
Stay secure and read SecureTechTalks 📚
#кибербезопасность #JWT #AppSec #WebSecurity #Authentication #API #DevSecOps #CyberSecurity #InfoSec #SecureTechTalks
Post #848
149

- 👍 1