JSON Web Tokens (JWT)

JSON Web Token (JWT)  představuje způsob pro bezpečnou výměnu informací mezi dvěma stranami.

JWT je JSON objekt, který se skládá z hlavičky (header), dat (payload) a podpisu (signature). Podle specifikace RFC 7519.

Cílem JWT je možnost ověření autenticity dat – skutečnosti, že data nebyla cestou změněna. Nikoli však skrýt obsah dat.
Účelem zakódování dat je převod struktury dat do lépe přenositelné podoby.

Použití JSON Web Tokenu

V běžném případě máme uživatele, aplikaci (aplikační server) a autentizační server.

  1. Uživatel se přihlásí (autentizuje) na autentizačním serveru (prostřednictvím jména a hesla, Google přihlášení apod.).
  2. Autentizační server ověří identitu uživatele a vytvoří JWT, který poskytne uživateli.
  3. Uživatel použije JWT při komunikaci s aplikací (např. volání API rozhraní).

Použití JSON Web Tokenu (JWT)

 

Formát JWT

header.payload.signature

Např.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Hlavička (header)

Obsahuje informace o způsobu výpočtu podpisu.

{
  "typ": "JWT"
  "alg": "HS256",
}
  • typ – typ objektu
  • alg – typ algoritmu pro vytvoření hashe

Data (payload)

{
  "sub": "1234567890",
  "name": "John Doe",
  "iat": 1516239022
}
  • přenášená data
    1. definovaná klíčová slova
      • iss – vydavatel
      • sub – subjekt
      • exp – čas vypršení
    2. libovolná vlastní uživatelská data

Podpis (signature)

Podpis je vytvořen na základě výpočtu:

HMACSHA256(
  base64UrlEncode(header) + "." + 
  base64UrlEncode(payload), 
  256-bit-secret
)

Implementace

Seznam implementace JWT pro různé jazyky je uveden na webu jwt.io.

Zdroje

Napsat komentář

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