Хотів вам сьогодні показати не зовсім протокол, а 1 механізм, який ви точно бачили в API, якщо хоч раз тестували логін чи авторизацію.
Я це про JWT token і дивно, що багато хто бачить його постійно, але не до кінця розуміє що це.
Що я маю вам сказать)
JWT це не якийсь окремий протокол. Це просто механізм, яким сервер типо каже: “ок, ти залогінився, ось тобі токен, далі ходи з ним”.
По факту це такий підписаний шматок даних, який зазвичай передається в: Authorization: Bearer <token>
Виглядає приблизно шось типо такого:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NSIsInJvbGUiOiJhZG1pbiIsImV4cCI6MTcxOTk5OTk5OX0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
В середині там все просто - я думаю шо ви знаєте шо це не просто список символів
перша частина це як воно підписане, друга це payload, тобто дані ну і третя це signature, щоб ви не могли просто руками підмінити роль чи user id
Більшість КУА бачать JWT і дивляться тільки: є токен чи нема токена. А далі не копають. І потім починається по колу:
лог-аут зробили, а токен ще живий / пароль змінили, а старий токен працює або роль у юзера змінили, а доступ залишився тощо
І всі дивляться на “авторизацію в цілому”, а проблема саме в JWT-логіці.
Зазвичай може поламатися такі штуки як, токен не протухає коли має або backend не перевіряє signature як треба/ logout не інвалідує токен/ refresh token живе вічно / role в payload одна, а доступи інші ну і access token працює після зміни пароля
Щоб швидко глянути що всередині токена: можна просто відкрити в
https://jwt.io
ну або руками декоднути payload.
як куа ви можете перевірити
що буде без токена/ що буде з протухшим токеном/ що буде з битим токеном/ що буде з токеном іншого юзера/ що буде після logout/ що буде після зміни ролі або пароля тощо
Бо якщо тестувати тільки “залогінився / не залогінився” ви бачите половину картини.
Друга половина - це як токен живе далі.
І якщо її не перевіряти - баги будуть. Стабільно.
Обняв🤗
Сильні💛