웹 보안에서 쓰이는 JWT에 대해 정리해 보았다.
JWT
Json Web Token의 줄임말로 자바스크립트의 JSON 자료구조를 가지고 있으며, Web Token으로써 사용할 수 있다는 의미이다. 주로 JWT 토큰은 사용자 인증과 로그인 유지를 위해 쓰인다.
JWT의 구조
JWT는 헤더, 페이로드, 시그니처 구조로 이루어진다.
aaaaaaa.bbbbbbb.ccccccc // 헤더.페이로드.시그니처
헤더
서명 시 사용하는 키(kid). 토큰 타입(typ), 서명 암호화 알고리즘(alg) 정보가 들어있다.
// 예
{
"kid" : "Key ID",
"typ" : "JWT",
"alg" : "ES256"
}
- kid : 서명 시 사용하는 키(Public/Private Key)를 식별하는 값
- typ : 토큰 유형
- alg : 서명 암호화 알고리즘 HS256(HMAC SHA-256), HS512, RS256(RSASSA SHA-256), ES256(ECDSA P-256 curve SHA-256)
페이로드
내용에서는 전달하는 데이터를 포함할 수 있으며 데이터 각각의 Key를 claim이라고 부른다.
그래서 사용자 정보의 한 조각인 클레임(claim)이 들어있다. claim에는 3가지 종류로 registered, public, private가 있다.
- iss : 토큰 발급자(issuer) – Public Claims
- sub : 토큰 제목(subject) – Public Claims
- iat : 토큰 발급 시간(issued at) – Public Claims
- exp : 토큰 만료 시간(expiration) – Public Claims
- roles : 권한 – Private Cliams
시그니처
Signature는 헤더와 페이로드의 문자열을 합친 후에, 헤더에서 선언한 알고리즘과 key를 이용해 암호한 값이다. • Header(헤더)와 페이로드(Payload)는 단순히 인코딩 된 값이기 때문에 제 3자가 복호화 및 조작할 수 있지만, Signature(서명)는 서버 측에서 관리하는 비밀 키가 유출되지 않는 이상 복호화할 수 없습니다. 이는 토큰의 위변조 여부를 확인하는 데 사용된다.
JWT 인코딩
JWT 장단점
장점
- 로컬에 저장하기 때문에 서버 용량에 영향을 끼치거나 받지 않는다.
- 모바일 앱에서 사용하기 적합하다. - 플랫폼, 기기, 도메인 통신에서 독립적으로 사용자 인증을 처리할 수 있기 때문에 적합하다.
- 네트워크 부하가 적다.
단점
- 토큰의 크기가 커질수록 트래픽에 영향을 미칠 수 있으며 토큰 만료 처리를 구현해야 한다.
'Dev' 카테고리의 다른 글
Next.js Amazon EC2 배포(2) (4) | 2024.09.02 |
---|---|
Next.js Amazon EC2 배포(1) (0) | 2024.09.02 |
Vercel 배포 (0) | 2024.08.30 |
Aws Route53 (0) | 2024.08.29 |
firebase 저장된 이미지 불러오기 (0) | 2024.08.29 |