JWT 란?
JWT (JSON Web Token)이란 사용자의 대한 정보를 JSON 형태로 안전하게 전달하기 위한 개방형 표준 규약이다.
디지털 서명이 되어있으므로 신뢰할 수 있다.
JWT의 구조
JWT는 Header / Payload / Signature 세 부분으로 나누어져 있다.
- Header
토큰에 대한 메타 데이터가 포함되어 있다. ( 타입, 알고리즘... ) - Payload
전달하려는 사용자의 정보, 만료 기간 등을 포함하고 있다. - Signature
보낸 사람에 의해 서명되어 있으며 조작이 되지 않았는지 확인하는 데 사용되는 서명이다.
JWT 사용의 장점
- 인증에 필요한 모든 정보를 담고 있기 때문에 별도의 저장소가 없어도 된다.
- Header와 Payload를 가지고 Signature를 생성하므로 데이터 위변조를 막을 수 있다.
- 트래픽 부담이 낮다.
- URL 파라미터와 헤더로 사용할 수 있다.
- 만료기한이 내장되어 있다.
JWT 사용의 단점
- 토큰 자체에 정보를 담고 있으므로 보안에 취약할 수 있다.
- 정보가 많아질수록 토큰의 길이가 늘어나 네트워크에 부하를 줄 수 있다.
- 탈취를 당하면 디코딩으로 데이터를 볼 수 있다. 그러므로 중요한 데이터를 넣지 않아야 한다.