Header
JWT header se skládá z typu tokenu a algoritmu používaného pro podepisování a kódování. Algoritmy mohou být HMAC, SHA256, RSA, HS256 nebo RS256.
{
"typ": "JWT",
"alg": "HS256"
}
Payload
Payload se skládá z dat relace nazývaných jako nároky. Níže jsou některé standardní pohledávky, které můžeme použít,
- Emitent(iss)
- Předmět (sub)
- Diváků (aud)
- čas Vypršení platnosti (exp)
- Vydáno v (iat)
{
"sub": "user10001",
"iat": 1569302116
}
Vlastní nároky mohou být zahrnuty v žádosti nastavit. Při použití vlastních sad reklamací,
- nevkládejte velká data do sad reklamací. Sady pohledávek měly být kompaktní.
- nedávejte citlivé informace, protože JWT lze snadno dekódovat.
{
"sub": "user10001",
"iat": 1569302116,
"role": "admin",
"user_id": "user10001"
}
podpis
podpis je nejdůležitější součástí webového tokenu JSON (JWT). Podpis se vypočítá kódováním záhlaví a užitečného zatížení pomocí kódování Base64url a jejich zřetězením oddělovačem období. Což je pak dáno kryptografickému algoritmu.
// signature algorithm
data = base64urlEncode( header ) + "." + base64urlEncode( payload )signature = HMAC-SHA256( data, secret_salt )
takže když se změní záhlaví nebo užitečné zatížení, musí se podpis znovu vypočítat. Pouze poskytovatel Identity(IdP) má soukromý klíč pro výpočet podpisu, který zabraňuje manipulaci s tokenem.
jak to funguje?
v podstatě poskytovatel identity(IdP) generuje JWT certifikující identitu uživatele a dekóduje Server zdrojů a ověřuje pravost tokenu pomocí tajného salt / veřejného klíče.
- přihlášení uživatele pomocí uživatelského jména a hesla nebo google / facebook.
- autentizační server ověřuje pověření a vydává JWT podepsaný pomocí tajné soli nebo soukromého klíče.
- klient uživatele používá JWT pro přístup k chráněným prostředkům předáním JWT v hlavičce autorizace HTTP.
- Resource server poté ověřuje pravost tokenu pomocí tajného klíče salt / public.