JWT - KeynesYouDigIt/Knowledge GitHub Wiki
Notes
- Used for authentication, as well as secure data exchange
- Super compact, so it can be used in urls, headers, etc.
- Stateless, so works well with RESTful APIs
Structure
The structure of a JWT is header.payload.signature
.
Header
The header has two parts- the type of token (JWT
) and the hashing algorithm (either RSA or SHA256). This is Base64Encoded
into the first part of the signature.
{
"alg": "HS256",
"typ": "JWT"
}
Payload
This contains a set of "claims" about a user, which are Base64Encoded
into the second part of the signature. There are three types of claims:
- Reserved Claims (Standard):
iss
: Issuerexp
: Expirationsub
: Subjectaud
: Audience
- Public Claims (User-defined, but should be registered)
- Private Claims (Defined between parties using them)
{
"sub": "1234567890",
"name": "Kyle Coberly",
"admin": true
}
Signature
Using the algorithm specified in the header, hash the encoded header.payload
with your secret.
Use in Authentication
- JWT is returned from the server, stored in local storage or cookie, and sent in the authorization header on each request:
Authorization: Bearer 1234.zxcv.asdf