Структура и анатомија на JSON Web Token (JWT)
JSON Web Token (JWT) претставува компактен и независен начин за безбедно пренесување на информации помеѓу страни како JSON објект. Секој важечки JWT е составен од три дела кои се меѓусебно разделени со точка. Овие три дела се:
- Заглавие: Содржи метаподатоци за токенот, како што се типот на токенот и алгоритмот за потпишување.
- Корисен товар: Ги содржи тврдењата (claims) кои пренесуваат конкретни податоци за корисникот или сесијата.
- Потпис (Signature): Се користи за верификација дека испраќачот на JWT е тој што тврди дека е и за потврда дека пораката не е изменета по патот.
За пренос низ мрежни протоколи, секој од овие делови поединечно се кодира со помош на Base64URL кодирање пред да се спојат со точки.
Улогата на заглавието и корисниот товар
Заглавието на токенот содржи информации кои му кажуваат на системот како да го обработи токенот. Во него најчесто се среќаваат клучовите alg (алгоритам кој се користи за потпишување, на пример HS256 или RS256) и typ (типот на токенот, кој вообичаено е JWT).
Корисниот товар ги содржи вистинските податоци кои се пренесуваат. Овие податоци се нарекуваат тврдења (claims) и се поделени на три категории: регистрирани, јавни и приватни тврдења. Во регистрираните тврдења спаѓаат стандардизирани клучови како што се iat (време на издавање) и exp (време на истекување). Овие временски ознаки се претставени како Unix временски печати.
Base64URL кодирање и JSON формат
Base64URL е варијација на стандардното Base64 кодирање дизајнирано за безбедно користење во URL адреси. Ова кодирање ги заменува знаците + и / со - и _ соодветно, и го отстранува дополнувањето со знакот =.
Важно е да се разбере дека Base64URL не е шифрирање. Тоа е едноставен начин на претставување на податоците во текстуален формат. Секој што има пристап до токенот може лесно да го декодира Base64URL стрингот назад во неговата оригинална форма. Поради ова, оригиналните податоци во заглавието и корисниот товар мора да бидат во важечки JSON формат за да можат успешно да се прочитаат по декодирањето.
Декодирање наспроти верификација на JWT
Постои суштинска разлика помеѓу декодирање на токен и негово верификување:
- Декодирање: Ова е процес на претворање на Base64URL стрингот назад во читлив JSON формат. За декодирање не е потребна лозинка, таен клуч или јавен клуч. Секој може да го декодира заглавието и корисниот товар за да ги види информациите во нив.
- Верификација: Ова е процес на потврдување на автентичноста на токенот со помош на неговиот потпис. За да се изврши верификација, неопходно е да се поседува тајниот клуч (кај симетричните алгоритми) или јавниот клуч (кај асиметричните алгоритми) со кој е потпишан токенот.
Ако се потпрете само на декодирање без да го верификувате потписот во Вашата апликација, се изложувате на сериозни безбедносни ризици. Напаѓачот може лесно да го измени корисниот товар (на пример, да ги промени корисничките привилегии) и повторно да го кодира токенот. Без верификација на потписот, Вашиот систем нема да знае дека податоците се манипулирани.
Како работи алатката JWT декодер
Оваа алатка овозможува брза анализа на структурата на Вашите токени директно во веб-прелистувачот.
Влезни податоци и валидација
За да започнете, потребно е да го внесете Вашиот токен во полето со ознака "Залепете го Вашиот JWT". Алатката применува строги правила за валидација на влезот:
- Внесениот текст мора да се состои од точно три дела разделени со точка. Доколку овој услов не е исполнет, се прикажува пораката "Неважечки JWT — се очекуваат три дела разделени со точка".
- Доколку внесениот текст е премногу долг, алатката ќе ја прикаже грешката "Тоа е премногу долго за да биде вистински JWT".
- Ако полето е празно, алатката останува во состојба "Подготвено. Залепете JWT за да го декодирате.". Кога ќе го исчистите полето со копчето "Исчисти", фокусот автоматски се враќа на полето за внес.
Обработка на грешки при декодирање
При процесирањето, алатката ги проверува заглавието и корисниот товар поединечно:
- Ако заглавието не може да се декодира поради неисправен Base64URL формат, се појавува пораката "Не можеше да се декодира заглавието — неважечки Base64URL".
- Ако корисниот товар има неисправен Base64URL формат, се прикажува "Не можеше да се декодира корисниот товар — неважечки Base64URL".
- Доколку декодираната содржина не е правилно структуриран JSON, ќе ги видите соодветните пораки "Заглавието не е важечки JSON" или "Корисниот товар не е важечки JSON".
- При појава на која било од овие грешки, декодираните полиња автоматски се скриени за да се спречи приказ на неточни податоци.
Излезни информации и статус
Кога токенот е успешно декодиран, алатката ги прикажува следните полиња и метаподатоци:
- Заглавие: Декодираната содржина на заглавието во JSON формат.
- Корисен товар: Декодираната содржина на корисниот товар во JSON формат.
- Алгоритам: Вредноста извлечена од
algтврдењето. - Тип: Вредноста извлечена од
typтврдењето. - Издаден во: Времето на издавање пресметано од
iatтврдењето. - Истекува: Времето на истекување пресметано од
expтврдењето. - Знаци: Вкупниот број на карактери во внесениот JWT.
Алатката го проверува exp тврдењето за да го одреди статусот на токенот и прикажува една од следниве значки:
- "Важечки"
- "Истечен"
- "Сè уште не е важечки"
- "Без истек" (доколку токенот воопшто не содржи
expтврдење)
Под статусот стои напомената "Ова го проверува само тврдењето exp — не го верификува потписот, издавачот или аудиториумот." за да ве потсети на безбедносните ограничувања на чистото декодирање.
Приватност на податоците
Вашиот токен се декодира во Вашиот прелистувач. Ништо не се прикачува на BroBroGo. Сите операции на декодирање и парсирање на JSON се извршуваат локално на Вашиот уред, што значи дека чувствителните податоци содржани во корисниот товар не го напуштаат Вашиот прелистувач.
Често поставувани прашања (FAQ)
Дали е безбедно да го залепам мојот JWT тука?
Да. Декодирањето се одвива целосно во Вашиот прелистувач — Вашиот токен никогаш не се испраќа до BroBroGo.
Дали ова го верификува потписот?
Не. Алатката само ги декодира заглавието (header) и корисниот товар (payload) за да можете да ги прочитате. Верификацијата на потписот бара тајна за потпишување или јавен клуч, кои оваа алатка никогаш не ги бара.
Како да знам дали мојот токен е истечен?
Декодерот го чита exp тврдењето (claim) и прикажува значка за статус — важечки, истечен, сè уште неважечки или без истек — веднаш до декодираниот токен.
Зошто добивам грешка за неважечки Base64URL?
Оваа грешка се јавува кога карактерите во некој од деловите на Вашиот JWT не соодветствуваат на стандардот за Base64URL кодирање, што значи дека токенот е оштетен или погрешно копиран.