Úvod do JWT: JSON Web Token (JWT) je otvorený štandard (RFC 7519), ktorý definuje kompaktný a samostatný spôsob bezpečného prenosu informácií medzi stranami v objektoch JSON. Tieto informácie je možné overiť a dôverovať prostredníctvom digitálnych podpisov. JWT môžu byť podpísané pomocou tajomstiev (pomocou algoritmu HMAC) alebo pomocou párov verejného/súkromného kľúča RSA.
Niektoré scenáre, kde sú JSON Web Tokeny užitočné:
Overenie identity:Toto je najbežnejší prípad použitia JWT. Po prihlásení používateľa každá nasledujúca požiadavka obsahuje JWT, ktorý umožňuje používateľovi prístup k trasám, službám a zdrojom povoleným daným tokenom. Single sign-on je funkcia, ktorá sa dnes široko používa vďaka nízkej režijnej náročnosti a možnosti jednoduchého použitia naprieč rôznymi doménami.
Výmena informácií:JSON Web Tokeny sú skvelým spôsobom, ako bezpečne prenášať informácie medzi stranami. Keďže JWT je možné podpísať – napríklad pomocou párov verejných/súkromných kľúčov, je možné si byť istí, že odosielateľ je tým, za koho sa vydáva. Okrem toho, keďže podpis sa počíta pomocou hlavičiek a payloadov, môžete tiež overiť, že obsah nebol upravený.
Oficiálna webová stránka:Prihlásenie na hypertextový odkaz je viditeľné.
Informácie o JWT analyzujte online:Prihlásenie na hypertextový odkaz je viditeľné.
Analýza parametrov JWT online Prihlásenie na hypertextový odkaz je viditeľné.
Moje chápanie JWT nižšie je nesprávne, prosím, poraďte mi
V prvom rade, toto zariadenie sa neodporúča používať na webovej stránke MVC, môžete ju použiť na webapi, umiestnenie tejto veci je API, nie relácia náhradnej webovej stránky!
asp.net návod na používanie webAPI:Prihlásenie na hypertextový odkaz je viditeľné.Koleso nebudem prerábať, pozrieť sa na to, čo je tento článok napísané, je v poriadku.
Zloženie JWT
JWT sa skladá z troch častí: Hlavička, Payload a Signatúra, pričom medzi nimi sú bodkové symboly, ktoré vytvárajú formu xx.yy.zz.
Všimnite si, že pri podpísaných tokenoch môže tieto informácie čítať ktokoľvek, aj napriek ochrane pred manipuláciou. Do platných obsahových alebo hlavičkových prvkov JWT neumiestňujte citlivé informácie, pokiaľ nie sú šifrované.
Napríklad:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
alg: "HS256",
typ: "JWT" }.
{
sub: "1234567890",
name: "John Doe",
iat: 1516239022 }. [podpis] Laicky povedané, tento token môže dešifrovať ktokoľvek, ale pravosť týchto informácií nie je možné overiť, overiť ju môže iba server, ktorý token vytvoril, preto doň neukladajte citlivé informácie.
Tu je problém, a to ak používateľ zmení heslo alebo mu je zakázané prihlásiť sa, ako môže JWT vyriešiť platnosť tokenu?
Môj vlastný nápad je pridať guid-podobný reťazec v sekcii Payload a potom existovať v cache, pri overovaní identity používateľa nielen overiť jwt, ale aj informácie o Payload v jwt, platnosť môžeme kontrolovať kontrolou cache.
|