WebInfo
JWT(Json Web Token)
Dexlee
2022. 4. 19. 21:54
1. jwt는?
- 토큰 기반 json 형식 데이터 정보를 관리하는 방법을 의미.
2. jwt의 구조
1) header.payload.signature
- (.)을 기준으로 3가지 파트로 나누어져 있음.
2) header
- 토큰에 대한 정보(알고리즘, 타입)
{
"alg": "HS256",
"typ": "JWT"
}
3) payload
- 토큰 내부 정보(발급자, 만료 시간, 제목, 대상 등)
- 직접 커스터마이징 할 수 있음.
{
"sub": "1234567890",
"name": "John Doe",
"admin": true
}
4) signature
- header와 payload 값을 합쳐서 hash로 만든 값
- 똑같은 인풋이 들어왔을 때, hash값(header+payload)이 같은지 signature를 통해 확인
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret)
3. jwt의 특징
- 유저 데이터를 유저가 직접 관리
- 데이터 조작이 되면 안 되므로 read-only
- 수정 불가능.
- 수정하려면 서버를 통해야함
- 접근권한을 디비에 저장하는 것이 아니라 json을 인코딩하여 클라이언트에 토큰으로 저장.
4. jwt의 장점
- 유저 인증과정에서 db 히트하지 않아도 되므로 서버 부하를 줄일 수 있음
- 서버 의존도를 낮춤
- 즉, 은행 같은 심각한 정보를 다루는 서비스가 아니라면 jwt를 사용하는 게 서버 부하를 줄이는 방법.
5. jwt의 문제점
- 토큰이 탈취당했을 시, 개인정보 유출이 될 수 있다.
6. jwt의 문제점에 대한 해결책
- 토큰 만료기간을 짧게 설정
- 토큰 만료기간 전에 만료시키려면 전체 초기화 진행
references
https://www.youtube.com/watch?v=MUUqogMpGiA