JSON Web Token-ի կառուցվածքը և բաղադրիչները
JSON Web Token-ը (JWT) կոմպակտ և ինքնուրույն միջոց է կողմերի միջև տեղեկատվությունը որպես JSON օբյեկտ անվտանգ փոխանցելու համար: Այս տեղեկատվությունը կարող է ստուգվել և վստահվել, քանի որ այն թվային ստորագրված է: Ստանդարտ JWT-ն բաղկացած է երեք մասից, որոնք իրարից բաժանվում են կետերով (.): Այդ մասերն են՝
- Վերնագիր (Header). Սովորաբար պարունակում է տեղեկատվություն տոկենի տեսակի և կիրառվող ստորագրման ալգորիթմի մասին:
- Օգտակար բեռնվածք (Payload). Պարունակում է պահանջները (claims), որոնք հանդիսանում են սուբյեկտի (օրինակ՝ օգտատիրոջ) և լրացուցիչ տվյալների մասին հայտարարություններ:
- Ստորագրություն (Signature). Օգտագործվում է հաստատելու համար, որ հաղորդագրությունը ճանապարհին չի փոփոխվել:
Յուրաքանչյուր հատված առանձին կոդավորվում է Base64URL ձևաչափով: Գործիքն ընդունում է այս ամբողջական տողը, վերլուծում այն և առանձնացնում բաղադրիչները:
Վերնագրի և օգտակար բեռնվածքի դերը
Վերնագիրը (Header) սահմանում է տոկենի մետատվյալները: Այնտեղ հիմնականում հանդիպում են alg (ալգորիթմ, օրինակ՝ HS256 կամ RS256) և typ (տոկենի տեսակը, որը սովորաբար JWT է) պահանջները: Այս տվյալները հստակեցնում են, թե ինչպես պետք է մշակվի և վավերացվի տոկենի ստորագրությունը:
Օգտակար բեռնվածքը (Payload) ներառում է բուն տեղեկատվությունը, որը փոխանցվում է հավելվածների միջև: Այստեղ գտնվում են ստանդարտացված պահանջները (claims), ինչպիսիք են iat (issued at — տրման ժամանակը) և exp (expiration time — ժամկետի ավարտը): Այս ժամանակային դրոշմները թույլ են տալիս համակարգերին որոշել տոկենի կիրառելիության սահմանները:
Տոկենի ապակոդավորման և ստուգման տարբերությունը
Կարևոր է տարբերակել տոկենի ապակոդավորումը (decoding) դրա վավերացումից կամ ստուգումից (verifying):
- Ապակոդավորում. Սա պարզապես Base64URL կոդավորված տեքստի վերածումն է ընթեռնելի JSON ձևաչափի: Քանի որ Base64URL-ը գաղտնագրում չէ, ցանկացած ոք, ով ունի տոկենը, կարող է կարդալ դրա պարունակությունը: Այս գործիքը կատարում է միայն ապակոդավորում:
- Ստուգում. Սա ստորագրության վավերացման գործընթացն է՝ օգտագործելով համապատասխան գաղտնիքը (signing secret) կամ հանրային բանալին (public key): Առանց ստորագրության ստուգման հնարավոր չէ երաշխավորել, որ տոկենի պարունակությունը չի կեղծվել կամ փոփոխվել չարագործի կողմից: Գործիքը չի վավերացնում ստորագրությունը, թողարկողին կամ լսարանին:
Գործիքի աշխատանքի կանոնները և սխալների մշակումը
Գործիքն ունի հստակ կանոններ ներկայացված տվյալների վերլուծության և սխալների արտացոլման համար։ Եթե մուտքագրման դաշտը դատարկ է, համակարգը մնում է «Պատրաստ է: Ապակոդավորելու համար տեղադրեք JWT:» կարգավիճակում։ Տվյալների մաքրման դեպքում կենտրոնացումը (focus) վերադառնում է մուտքագրման դաշտին։
Եթե ներկայացված տեքստը չի համապատասխանում ստանդարտներին, ցուցադրվում են հետևյալ հաղորդագրությունները, իսկ ապակոդավորված հատվածները թաքցվում են։
| Իրավիճակ | Ցուցադրվող հաղորդագրություն |
|---|---|
| Տեքստը չի պարունակում երեք մաս | Անվավեր JWT. պահանջվում է կետերով բաժանված երեք մաս: |
| Մուտքագրված տեքստը չափազանց երկար է | Դա չափազանց երկար է իրական JWT լինելու համար: |
| Վերնագրի Base64URL-ն անվավեր է | Չհաջողվեց ապակոդավորել վերնագիրը. անվավեր Base64URL: |
| Օգտակար բեռնվածքի Base64URL-ն անվավեր է | Չհաջողվեց ապակոդավորել օգտակար բեռնվածքը. անվավեր Base64URL: |
| Վերնագիրը վավեր JSON չէ | Վերնագիրը վավեր JSON չէ: |
| Օգտակար բեռնվածքը վավեր JSON չէ | Օգտակար բեռնվածքը վավեր JSON չէ: |
Եթե տոկենը հաջողությամբ ապակոդավորվում է, գործիքը ցույց է տալիս «Տոկենն ապակոդավորված է:» հաղորդագրությունը և արտածում է հետևյալ տվյալները՝ Ալգորիթմ, Տեսակ, Տրված է, Ժամկետի ավարտը, Նիշեր և համապատասխան կարգավիճակի նշանը։
Տվյալների մշակում և գաղտնիություն
Այս գործիքից օգտվելիս Ձեր տվյալների անվտանգությունը պահպանվում է տեղային մշակման շնորհիվ: Ձեր տոկենն ապակոդավորվում է Ձեր բրաուզերում: Ոչինչ չի վերբեռնվում BroBroGo: Գործիքը չի պահանջում և չի հարցնում ստորագրման գաղտնիքը կամ հանրային բանալին, ինչը բացառում է զգայուն բանալիների արտահոսքը: Սա հարմար է դարձնում գործիքի կիրառումը ծրագրավորողների, աջակցման մասնագետների և անվտանգության փորձարկողների համար, ովքեր աշխատում են տոկենների վերլուծության վրա:
Հաճախ տրվող հարցեր (FAQ)
Անվտա՞նգ է արդյոք իմ JWT-ն այստեղ տեղադրելը:
Այո՛: Ապակոդավորումն ամբողջությամբ կատարվում է Ձեր բրաուզերում. Ձեր տոկենը երբեք չի ուղարկվում BroBroGo:
Արդյո՞ք սա ստուգում է ստորագրությունը:
Ո՛չ: Այն միայն ապակոդավորում է վերնագիրը (header) և օգտակար բեռնվածքը (payload) Ձեր ընթերցման համար: Ստորագրության ստուգման համար անհրաժեշտ է ստորագրման գաղտնիքը կամ հանրային բանալին, որոնք այս գործիքը երբեք չի հարցնում:
Ինչպե՞ս իմանալ՝ արդյոք իմ տոկենի ժամկետն անցել է:
Ապակոդավորիչը կարդում է exp պահանջը (claim) և ապակոդավորված տոկենի կողքին ցուցադրում է կարգավիճակի նշան՝ վավեր, ժամկետանց, դեռևս ոչ վավեր կամ առանց ժամկետի:
Ի՞նչ է նշանակում, եթե տոկենը չունի exp պահանջ:
Եթե տոկենը չունի exp պահանջ, ապա գործիքի կողմից ցուցադրվող կարգավիճակը կլինի «Առանց ժամկետի»։