JSON Web Token struktūra un darbības principi
JSON Web Token (JWT) ir kompakts un pašpietiekams veids, kā droši pārsūtīt informāciju starp pusēm JSON objekta formātā. Šī informācija ir digitāli parakstīta, kas ļauj pārbaudīt tās integritāti un uzticamību. JWT sastāv no trim daļām, kuras vienu no otras atdala punkts (.): galvenes (header), lietderīgās slodzes (payload) un paraksta (signature).
Katru no šīm daļām kodē, izmantojot Base64URL algoritmu. Šis kodēšanas veids pārveido bināros datus vai tekstu drošā URL formātā, aizstājot standarta Base64 rakstzīmes, kas varētu traucēt URL struktūrai (piemēram, + un / tiek aizstāti ar - un _, kā arī tiek izlaista vienādības zīmju = aizpildīšana).
- Galvene (Header): Parasti satur informāciju par pilnvaras veidu un izmantoto parakstīšanas algoritmu.
- Lietderīgā slodze (Payload): Satur apgalvojumus (claims) jeb datus par lietotāju un papildu metadatus.
- Paraksts (Signature): Tiek izveidots, parakstot kodēto galveni un lietderīgo slodzi ar slepeno atslēgu vai privāto/publisko atslēgu pāri, izmantojot galvenē norādīto algoritmu.
Šis rīks ir paredzēts izstrādātājiem, atbalsta inženieriem un drošības testētājiem, kuriem nepieciešams ātri pārbaudīt un analizēt JWT saturu.
JWT galvenes un lietderīgās slodzes apgalvojumi
Galvene un lietderīgā slodze pēc atkodēšanas tiek attēlotas kā strukturēti JSON objekti. Galvenē biežāk izmantotie apgalvojumi ir:
alg: Norāda parakstīšanas algoritmu (piemēram, HS256 vai RS256).typ: Norāda objekta veidu, kas parasti ir "JWT".
Lietderīgajā slodzē tiek izvietoti dati, kas iedalās reģistrētajos, publiskajos un privātajos apgalvojumos. Reģistrētie apgalvojumi palīdz definēt pilnvaras metadatus un dzīves ciklu:
iat(Issued At): Laiks, kad pilnvara tika izsniegta.exp(Expiration Time): Pilnvaras derīguma termiņa beigu laiks.
Šo laika zīmogu nolasīšana un interpretēšana ļauj noteikt, vai pilnvara joprojām ir aktīva un izmantojama autorizācijas procesos.
Atkodēšanas un paraksta pārbaudes atšķirības
Ir svarīgi saprast atšķirību starp JWT atkodēšanu un tā paraksta pārbaudi (verifikāciju).
Atkodēšana ir vienkārša Base64URL algoritma apgriešana, lai pārvērstu teksta virkni atpakaļ lasāmā JSON formātā. Tam nav nepieciešamas nekādas paroles, slepenās atslēgas vai publiskie sertifikāti. Jebkurš, kuram ir piekļuve JWT virknei, var to atkodēt un izlasīt tās saturu.
Turpretī paraksta pārbaude ir drošības procedūra, kurā tiek izmantots parakstīšanas noslēpums vai publiskā atslēga, lai pārliecinātos, ka pilnvaras saturs pēc izveidošanas nav ticis mainīts. Ja klients vai starpnieks maina kaut vienu simbolu lietderīgajā slodzē, paraksts vairs nesakritīs, un pilnvara tiks noraidīta.
Šis rīks veic tikai datu atkodēšanu un vizualizāciju. Tas neprasa ievadīt parakstīšanas noslēpumu vai publisko atslēgu un neveic paraksta verifikāciju. Tāpēc, izmantojot šo rīku, vienmēr jāņem vērā, ka parādītie dati ir tikai atkodēti, bet ne obligāti autentiski.
Ievades nosacījumi un kļūdu apstrāde
Lai rīks veiksmīgi apstrādātu pilnvaru, ievadītajai virknei ir jāatbilst noteiktiem formāta standartiem. Ja ievadītie dati neatbilst prasībām, sistēma uzrāda attiecīgu paziņojumu un paslēpj atkodēšanas sadaļas:
- Ja lauks ir tukšs, rīks atrodas stāvoklī "Gatavs. Ielīmējiet JWT, lai to atkodētu.".
- Ja ievadītajā tekstā nav trīs daļu, kas atdalītas ar punktiem, tiek parādīts paziņojums: "Nederīgs JWT formāts — tiek sagaidītas trīs ar punktu atdalītas daļas.".
- Ja galvenes daļu nevar atkodēt Base64URL kļūdas dēļ, tiek attēlots: "Neizdevās atkodēt galveni — nederīgs Base64URL.".
- Ja lietderīgās slodzes daļā ir kļūdains Base64URL kodējums, parādās: "Neizdevās atkodēt lietderīgo slodzi — nederīgs Base64URL.".
- Ja atkodētā galvene nav pareizi noformēts JSON objekts, tiek uzrādīts: "Galvene nav derīgs JSON.".
- Ja atkodētā lietderīgā slodze nav pareizs JSON, parādās: "Lietderīgā slodze nav derīgs JSON.".
- Ja ievadītais teksts pārsniedz reālas pilnvaras izmēru, sistēma izvada: "Tas ir pārāk garš, lai būtu īsts JWT.".
Kad ievade tiek iztīrīta, izmantojot pogu "Notīrīt", fokuss automātiski atgriežas ievades laukā.
Datu privātums un apstrāde pārlūkprogrammā
Lietojot šo rīku, jūsu dati ir aizsargāti pret noplūdi tīklā. Pilnvaras atkodēšana pilnībā notiek jūsu pārlūkprogrammā. Ievadītais JWT netiek sūtīts uz ārējiem serveriem, un nekas netiek augšupielādēts BroBroGo. Visi aprēķini un teksta transformācijas tiek veiktas lokāli jūsu ierīces operatīvajā atmiņā.
Biežāk uzdotie jautājumi (FAQ)
Vai ir droši šeit ielīmēt savu JWT?
Jā. Atkodēšana pilnībā notiek jūsu pārlūkprogrammā — jūsu pilnvara nekad netiek sūtīta uz BroBroGo.
Vai šis rīks pārbauda parakstu?
Nē. Rīks tikai atkodē galveni (header) un lietderīgo slodzi (payload), lai jūs varētu to izlasīt. Paraksta pārbaudei ir nepieciešams parakstīšanas noslēpums vai publiskā atslēga, ko šis rīks nekad neprasa.
Kā es varu zināt, vai manai pilnvarai ir beidzies derīguma termiņš?
Atkodētājs nolasa exp apgalvojumu (claim) un blakus atkodētajai pilnvarai parāda statusa nozīmīti — derīga, beidzies termiņš, vēl nav derīga vai nav derīguma termiņa.
Kas notiek, ja pilnvarai nav norādīts derīguma termiņš?
Ja JWT nesatur exp apgalvojumu, rīks statusa laukā attēlos vērtību "Nav termiņa".