Json 웹 포맷을 사용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token이다.
토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 전달한다.
주로 회원 인증이나 정보 전달에 사용된다.
JWT는 Header, Payload, Signature의 3부분으로 이루어진다.
Json형태인 각 부분은 Base64Url로 인코딩 되어 표현된다.
각각의 구분을 이어 주기 위해서 구분자를 사용하여 구분
토큰의 헤더는 typ와 alg 두 가지 정보로 구성된다. alg는 헤더를 암호화 하는것이 아닌 Signature를 해싱하는 알고리즘을 지정하는것.
{
"alg": "HS256",
"typ": JWT
}
토큰에서 사용할 정보의 조각들인 클레임이 담겨있다.
클레임은 총 3가지로 나누어지고 Json(Key/Value) 형태로 다수의 정보를 넣을 수 있다.
토큰 정보를 표현하기 위해 이미 정해진 종류의 데이터들이다
모두 선택적으로 작성이 가능함.
JWT를 간결하게 하기 위해 key는 모두 길이 3의 String으로 이루어져있음
여기서 Subject는 unique한 값을 사용해야한다. (ex - 유저이메일)
토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유의 암호화 코드이다.
서명은 위에서 만든 헤더와 페이로드의 값을 각각 base64Url로 인코딩하고 인코딩한 값을 비밀키를 이용해 헤더에서 정의한 알고리즘으로 해싱한 후 이 값을 다시 base64Url로 인코딩하여 생성한다.
HTTP 통신을 할 때 Authorization에 {key: value}로 사용된다.
예시
{
"Authorization": "Bearer {Token}",
}