JWT를 사용하기전에 무엇인지부터 알아보겠습니다.
JWT는 Json Web Token을 뜻합니다. Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token으로, JWT는 토큰 자체를 정보로 사용하는 Self-Contained 방식으로 정보를 안전하게 전달합니다.
토큰의 구조는 header.payload.signature 로 이루어져 있고 .이 구분자 역할을 합니다.
header는 토큰의 타입(typ)과 해싱 알고리즘 정보(alg)를 가지고 있습니다.
토큰의 타입은 JWT이고, 해싱 알고리즘은 보통 SHA256을 사용합니다. 이 알고지즘은 signature에서 토큰 검증을 위해 사용됩니다. 아래와 같이 사용합니다.
{
"typ" : "JWT",
"alg" : "SHA256"
}
payload는 여러 정보들이 담겨있습니다. 정보 하나하나를 클레임(claim)이라고 하며 name/value의 형태로 이루어져 있습니다. 클레임의 종류와 특징은 다음과 같습니다.
{ "https://velog.io/@eunjeong": true }
{ "token_type": access }
payload의 예제는 다음과 같습니다.
{
"iss": "velog.io/@eunjeong",
"exp": "1485270000000",
"https://velog.io/@eunjeong/jwt_claims/is_admin": true,
"username": "eunjeong"
}
signature는 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드
jwt의 Debugger에서 생성되는 토큰을 확인하거나 생성된 토큰을 검증할 수 있습니다.