Welcome to Our Website

JSON Web Token (JWT) vysvětlil

JSON Web Token je standard používaný k vytváření přístupových tokenů pro aplikaci.

funguje to takto: server generuje token, který potvrzuje identitu uživatele, a odešle jej klientovi.

klient zašle token zpět na server pro každý další požadavek, takže server ví, že požadavek pochází z určité identity.

tato architektura se ukazuje jako velmi účinná v moderních webových aplikacích, kde po ověření uživatele provádíme požadavky API buď na odpočinek, nebo na GraphQL API.

kdo používá JWT?, Například Google. Pokud používáte API Google, budete používat JWT.

JWT je kryptograficky podepsána (ale není šifrován, proto pomocí protokolu HTTPS je povinné při ukládání uživatelských dat v JWT), takže tam je záruka, můžeme věřit, když jsme se přijímat to, jako žádný prostředník může zachytit a upravit jej, nebo údaje, které drží, aniž by tím utrpěla.

to znamená, že JWTs jsou často kritizovány za jejich nadužívání a zejména za jejich použití, když lze použít méně problematická řešení.

musíte vytvořit svůj názor na toto téma., Nebudu obhajovat technologii nad jinou, jen představuji všechny příležitosti a nástroje, které máte k dispozici.

k čemu jsou dobré? Hlavně autentizace API a autorizace serveru na server.

jak se generuje token JWT?

pomocí uzlu.,js můžete vytvářet první část token pomocí tohoto kódu:

const header = { "alg": "HS256", "typ": "JWT" }const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64')

nastavte podpisu algoritmus HMAC SHA256 (JWT podporuje více algoritmy), pak jsme se vytvořit nárazníkové z tohoto JSON kódovaný objekt, a my zakódovat pomocí base64.

částečný výsledek je eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.

dále přidáme užitečné zatížení,které můžeme přizpůsobit jakýmkoli druhem dat., K dispozici jsou vyhrazené klíče, včetně iss a exp, které identifikují emitenta a dobu vypršení tokenu.

můžete přidat vlastní data do tokenu pomocí objekt:

const payload = { username: 'Flavio' }

převést tento objekt, JSON-encoded, do Vyrovnávací paměti a budeme kódovat výsledek pomocí base64, stejně jako jsme to udělali před:

const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64')

V tomto případě částečného výsledku, je eyJ1c2VybmFtZSI6IkZsYXZpbyJ9.,

dále získáme podpis z obsahu záhlaví a užitečného zatížení, což zajišťuje, že náš obsah nelze změnit, i když bude zachycen, protože náš podpis bude zneplatněn. K tomu, budeme používat crypto Uzel modulu:

použijeme secretKey tajný klíč a vytvořit base64 reprezentace šifrovaný podpis.,

hodnota podpisu v našem případě je

MQWECYWUT7bayj8miVgsj8KdYI3ZRVS+WRRZjfZrGrw=

Jsme skoro hotovi, jen musíme spojit 3 části záhlaví, datová část a podpis tím, že je odděluje tečkou:

const jwt = `${encodedHeader}.${encodedPayload}.${signature}`

ověřování API

To je asi jediný rozumný způsob, jak používat JWT.

běžným scénářem je: zaregistrujete se ke Službě a stáhnete si JWT ze servisního panelu. To je to, co od nynějška použijete k ověření všech vašich požadavků na server.,

Další případ použití, který je opačný, posílá JWT když se vám podaří API a klienti připojit k vám, a chcete, aby vaše uživatelům posílat následné žádosti jen procházející token.

v tomto případě musí klient token někde uložit. Kde je nejlepší místo? V HttpOnly cookie. Ostatní metody jsou všechny náchylné k útokům XSS a jako takové je třeba se jim vyhnout. Soubor cookie HttpOnly není přístupný z JavaScriptu a je automaticky odeslán na server origin na každou žádost, takže dokonale vyhovuje případu použití.,

vyberte nejlepší knihovnu JWT

V závislosti na jazyce a prostředí, které používáte, si můžete vybrat z řady knihoven. Nejoblíbenější jsou uvedeny v jwt.io webové stránky.

nepoužívejte jwts jako tokeny relace

pro relace byste neměli používat JWTs. Použijte běžný mechanismus relace na straně serveru, protože je mnohem efektivnější a méně náchylný k expozici dat.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *