концепції / jwt
JWT
Улюблена тема каналу для питань із підступом: JWT виглядає зашифрованим, але це просто base64url-кодування плюс підпис — фронтенд може прочитати весь payload без жодного ключа (різниця між хешуванням, кодуванням і шифруванням). У відео про Base64 Віктор доводить це наживо: header (метадані про алгоритм) і payload розкодовуються звичайним base64 --decode; секрет потрібен лише для перевірки підпису. Віра в те, що JWT шифрує свій payload, і використання його як прихованого сховища сесії — його дефолтний приклад пастки поверхневих знань (3 речі, що роблять програміста кращим); ліки — розуміти, що таке підпис насправді.
Утім, при правильному використанні JWT потужний: токен несе всю підписану сесію, тож він stateless і його не потрібно зберігати в базі — у цьому й сенс (Q&A №1). Підпис може бути симетричним (HMAC на спільному секреті, де емітент = перевіряльник) або асиметричним — і асиметричний варіант сяє в мікросервісах: сервіс авторизації підписує своїм приватним ключем, а всі інші сервіси перевіряють лише публічним, тож секрет ніколи не покидає емітента (асиметричне шифрування і цифрові підписи).
Розібрано у відео
- Хешування, кодування, шифрування — у чому різниця?
вступне питання з підступом: JWT виглядає зашифрованим, а це Base64 + підпис; читається без жодного ключа
- Як працює Base64 і навіщо він потрібен
живе демо: header і payload розкодовуються звичайним
base64 --decode; base64url; підписаний, а не зашифрований - Що захищає твої дані й гроші від хакерів? Асиметричне шифрування та цифровий підпис
HMAC vs асиметричний підпис; мікросервісний патерн «перевіряй лише публічним ключем»
- Питання та відповіді №1: чи захистить HTTPS?
stateless за задумом: підписаний токен несе сесію, зберігання в базі не потрібне; публічний ключ дає змогу перевіряти будь-якому сервісу
- 3 речі, які роблять програміста кращим
пастка поверхневих знань: JWT як приховане сховище сесії, бо «воно ж зашифроване»
Повʼязане
Цифрові підписи — те, чим JWT є насправді. Base64 — те, як JWT запакований (base64url). Шифрування — те, чим JWT не є. Асиметричне шифрування — чому мікросервіси можуть перевіряти без спільних секретів. Мікросервіси — архітектура, де асиметричний підпис JWT окупається.