Структура и съставни части на JSON Web Token (JWT)
JSON Web Token (JWT) е компактен и самостоятелен стандарт за сигурно предаване на информация между две страни под формата на JSON обект. Всеки валиден JWT се състои от точно три части, разделени с точки (.). Тези три секции са:
- Заглавка (Header): Съдържа метаданни за токена, включително използвания алгоритъм за подписване и типа на токена.
- Полезен товар (Payload): Съдържа твърденията (claims), които представляват пренасяните данни за потребителя или сесията.
- Подпис (Signature): Използва се за верификация на произхода и интегритета на токена, гарантирайки, че съдържанието не е било променяно по пътя.
За да се осигури безопасно пренасяне през уеб протоколи, всяка от тези три части се кодира поотделно с помощта на Base64URL кодиране. Този формат заменя стандартните символи в Base64, които имат специално значение в URL адресите (като + и /), съответно с - и _, и премахва символите за запълване (=).
Роля на заглавката и полезния товар
Заглавката на JWT дефинира как трябва да се интерпретира и обработва токенът. В нея се съдържат ключови параметри като:
alg: Алгоритъмът, използван за подписване на токена (например HS256, RS256).typ: Типът на токена, който в този контекст обикновено еJWT.
Полезният товар съдържа същинската информация, разделена на твърдения (claims). Тези твърдения се делят на три категории: регистрирани, публични и частни. Сред най-важните регистрирани твърдения, които определят жизнения цикъл на токена, са:
iat(Issued At): Времето, в което токенът е бил издаден.exp(Expiration Time): Времето, след което токенът престава да бъде валиден и трябва да бъде отхвърлен.
Декодиране срещу верификация на JWT
Съществена стъпка при работата с токени е разбирането на разликата между декодиране и верификация.
Декодирането е чисто математическо преобразуване на Base64URL кодирания низ обратно до четим JSON формат. Тъй като Base64URL не е шифроване, всеки, който има достъп до токена, може да го декодира и да прочете съдържанието на заглавката и полезния товар.
Верификацията, от друга страна, изисква проверка на подписа на токена. За тази цел е необходима тайната на подписване (signing secret) при симетрични алгоритми или публичният ключ при асиметрични алгоритми. Без тази проверка не може да се гарантира, че данните в токена са легитимни и не са манипулирани от трета страна.
Правила за валидация и обработка на грешки
При въвеждане на данни в полето "Поставете Вашия JWT", инструментът извършва поредица от проверки в реално време, за да гарантира коректността на структурата:
- Празно съдържание: Ако полето е празно, инструментът остава в състояние "Готово. Поставете JWT, за да го декодирате.".
- Невалиден формат: Ако входният низ не съдържа точно три части, разделени с точки, се извежда съобщението "Невалиден JWT формат — очакват се три части, разделени с точки.".
- Проблеми с Base64URL: При невъзможност за декодиране на заглавката или полезния товар поради некоректно кодиране, се показват съответно грешките "Заглавката не можа да бъде декодирана — невалиден Base64URL." или "Полезният товар не можа да бъде декодиран — невалиден Base64URL.".
- Невалиден JSON: Ако декодираните структури не съответстват на JSON стандарта, се изписва "Заглавката не е валиден JSON." или "Полезният товар не е валиден JSON.".
- Прекомерна дължина: При твърде дълъг входен низ се задейства ограничението "Това е твърде дълго, за да бъде истински JWT.".
При възникване на някоя от тези грешки, декодираните области се скриват автоматично. Когато входните данни бъдат изчистени чрез бутона "Изчистване", фокусът се връща директно върху текстовото поле за въвеждане.
Поверителност и сигурност на данните
При работа с чувствителни сесийни токени сигурността е от първостепенно значение. Този инструмент е проектиран с мисъл за Вашата поверителност:
- Локална обработка: Вашият токен се декодира директно в браузъра Ви.
- Без трансфер на данни: Нищо не се качва в BroBroGo.
- Без изискване на ключове: Инструментът не изисква и не съхранява тайни ключове или публични сертификати, тъй като не извършва криптографска верификация на подписа.
Често задавани въпроси (FAQ)
Безопасно ли е да поставя моя JWT тук?
Да. Декодирането се извършва изцяло във Вашия браузър — Вашият токен никога не се изпраща до BroBroGo.
Проверява ли се подписът на токена?
Не. Инструментът само декодира заглавката (header) и полезния товар (payload), за да можете да ги прочетете. Проверката на подписа изисква тайната на подписване (signing secret) или публичния ключ, които този инструмент никога не изисква.
Как да разбера дали моят токен е изтекъл?
Декодерът разчита стойността на exp (expiration time) и показва статус значка — валиден, изтекъл, все още невалиден или без срок на годност — точно до декодирания токен.
Какво означава статусът "Без срок"?
Този статус се показва, когато в полезния товар на токена липсва твърдението exp (expiration time), което означава, че токенът няма дефиниран срок на годност в структурата си.