Git & CS
JSON Web Token?
승민아
2024. 1. 18. 16:05
JWT는 서명된 토큰에 중점을 둔다.
즉, JWT 토큰은 내가 쓴게 맞어라는 서명의 용도로 사용하는 것이다.
Authorization에 사용
사용자가 성공적인 로그인한 이후에 우린 JWT 토큰을 응답으로 준다.
사용자는 이 토큰을 가지고 허용된 리소스에 접근할 수 있는 것이다.
JWT 구조
JWT는 3 파트로 나눠지며 각 파트는 . 으로 구분된다.
xxxxx.yyyyyy.zzzzz 구조를 갖는 것이다.
다음은 3 파트를 설명한다.
1. Header
보통 서명에 사용된 알고리즘과 토큰 유형을 갖는다.
{
"alg": "HS256",
"typ": "JWT"
}
이 내용 JSON은 Base64Url로 인코딩되어 JWT의 첫번째 부분을 차지한다.
2. Payload
Playload는 Claim을 포함한다. 나중에 JWT 토큰을 만들며 Claim을 빌드하는 과정이 있는데 아하싶다.
클레임 종류가 다양하지만
그 중 Private Claim으로 유저 아이디와 같은것을 넣어 주고 받을 것이다.
공개되어도 괜찮고 유저를 구분할 수 있는 것을 넣어줄것이다.!
3. Signature
Header, Payload, SecrectKey(서버만 알고 있는 비밀 키)를
HMAC256(HMAC SHA256)로 암호화합니다.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
따라서 시크릿 키는 안전하게 보관해야한다...
이 세가지를 합쳐서 다음과 같이 JWT를 완성할 수 있다.
그럼 JWT는 어떻게 사용해야 하는가?
서버에 요청할때 헤더에 Authorization 키 값을 다음과 같이 넣어주어
서버에 요청을 하면 된다.
Authorization: Bearer <token>