Header
header består af tokentype og algoritme, der bruges til signering og kodning. Algoritmer kan være HMAC, SHA256, RSA, HS256 eller RS256.
{
"typ": "JWT",
"alg": "HS256"
}
nyttelast
nyttelast består af de sessionsdata, der kaldes som krav. Nedenfor er nogle af de standardkrav, som vi kan bruge,
- udsteder (iss)
- emne (under)
- publikum (AUD)
- udløbstid (tidl.)
- udstedt på (iat)
{
"sub": "user10001",
"iat": 1569302116
}
brugerdefinerede krav kan også medtages i kravsættet. Når du bruger brugerdefinerede kravsæt,
- sæt ikke store data i kravsæt. Krav sæt betød at være kompakt.
- læg ikke følsomme oplysninger, da JVT let kan afkodes.
{
"sub": "user10001",
"iat": 1569302116,
"role": "admin",
"user_id": "user10001"
}
signatur
Signatur er den vigtigste del af et JSON-Token. Signatur beregnes ved at kode overskriften og nyttelasten ved hjælp af Base64url-kodning og sammenkæde dem med en periodeseparator. Som derefter gives til den kryptografiske algoritme.
// signature algorithm
data = base64urlEncode( header ) + "." + base64urlEncode( payload )signature = HMAC-SHA256( data, secret_salt )
så når overskriften eller nyttelasten ændres, skal signaturen beregnes igen. Kun Identity Provider (IdP) har den private nøgle til at beregne signaturen, som forhindrer manipulation af token.
hvordan virker det?
grundlæggende genererer identity provider(IdP) en certificering af brugeridentitet og Ressourceserver afkoder og verificerer ægtheden af tokenet ved hjælp af hemmelig salt / offentlig nøgle.
- brugerlogon ved hjælp af brugernavn og adgangskode eller google/facebook.
- Autentificeringsserver verificerer legitimationsoplysningerne og udsteder en signatur med enten et hemmeligt salt eller en privat nøgle.
- brugerens klient bruger JVT til at få adgang til beskyttede ressourcer ved at sende JVT i HTTP autorisation header.
- Resource server verificerer derefter ægtheden af token ved hjælp af den hemmelige salt/ offentlige nøgle.