jak JSON Web Token(JWT) ověřování funguje?

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,

  1. Emitent(iss)
  2. Předmět (sub)
  3. Diváků (aud)
  4. čas Vypršení platnosti (exp)
  5. 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.

  1. přihlášení uživatele pomocí uživatelského jména a hesla nebo google / facebook.
  2. autentizační server ověřuje pověření a vydává JWT podepsaný pomocí tajné soli nebo soukromého klíče.
  3. 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.
  4. Resource server poté ověřuje pravost tokenu pomocí tajného klíče salt / public.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

More: