Header
JWT header koostuu token-tyypistä ja algoritmista, jota käytetään allekirjoittamiseen ja koodaamiseen. Algoritmit voivat olla HMAC, SHA256, RSA, HS256 tai RS256.
{
"typ": "JWT",
"alg": "HS256"
}
hyötykuorma
hyötykuorma koostuu istuntodatasta, jota kutsutaan nimellä claims. Alla on joitakin vakio väittää, että voimme käyttää,
- liikkeeseenlaskija (iss)
- aihe (sub)
- yleisö (aud)
- vanhenemisaika (exp)
- Issued at (iat)
{
"sub": "user10001",
"iat": 1569302116
}
korvausvaatimukset voidaan sisällyttää myös korvausvaatimusjoukkoon. Käytettäessä mukautettuja korvausvaatimusjoukkoja,
- älä laita suuria tietoja korvausvaatimusjoukkoihin. Vaatimussarjat, jotka on tarkoitettu kompakteiksi.
- älä laita arkaluonteisia tietoja, sillä JWT voidaan purkaa helposti.
{
"sub": "user10001",
"iat": 1569302116,
"role": "admin",
"user_id": "user10001"
}
allekirjoitus
allekirjoitus on tärkein osa JSON Web Tokenia(JWT). Allekirjoitus lasketaan koodaamalla otsikko ja hyötykuorma Base64url-koodauksella ja yhdistämällä ne jaksonerottimella. Joka sitten annetaan salausalgoritmille.
// signature algorithm
data = base64urlEncode( header ) + "." + base64urlEncode( payload )signature = HMAC-SHA256( data, secret_salt )
joten kun otsikko tai hyötykuorma muuttuu, allekirjoitus on laskettava uudelleen. Vain henkilöllisyyden tarjoajalla(IdP) on yksityinen avain allekirjoituksen laskemiseen, joka estää Tokenin peukaloinnin.
miten se toimii?
periaatteessa identiteetin tarjoaja(IdP) luo JWT-varmennuksen, joka vahvistaa käyttäjän identiteetin ja Resurssipalvelimen dekoodit ja varmistaa poletin aitouden käyttämällä salaista suolaa / julkista avainta.
- käyttäjä kirjautuu sisään käyttäjätunnuksella ja salasanalla tai google / Facebookilla.
- Authentication server tarkastaa tunnukset ja antaa allekirjoitetun jwt: n käyttäen joko salaista suolaa tai yksityistä avainta.
- käyttäjän asiakas käyttää JWT: tä suojattujen resurssien käyttämiseen ohittamalla JWT: n HTTP-valtuutuksen otsikossa.
- Resource server varmistaa poletin aitouden salaisen suolan / julkisen avaimen avulla.