JWT (JSON Web Token)
- JSON 형태의 데이터를 안전하게 교환하여 사용할 수 있다.
- 인터넷 표준으로서 자리잡은 규격.
- 여러가지 암호화 알고리즘을 사용할 수 있다.
- header.payload.signature의 형식으로 3가지의 데이터를 포함
- header : signature에서 어떤 암호화를 사용하여 생성된 데이터인지 표현.
- payload : 원하는 데이터를 저장.
- signature : 토큰이 변조되지 않은 정상적인 토큰인지 확인
2. 쿠키, 세션과의 차이점
- 데이터를 교환하고 관리하는 쿠키, 세션과 달리 JWT는 단순히 데이터를 표현하는 형식.
3. Express환경에서 JWT 사용
1. 모듈 설치
npm init
npm i jsonwebtoken -S
2. JSON 데이터 암호화
const jwt = require("jsonwebtoken");
const token = jwt.sign({ myPayloadData: 1234 }, "mysecretkey");
3. 코드 검증
const jwt = require("jsonwebtoken");
const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0fQ.6XFgtNglH9hIzz5y8jAcI0g5kDnlAvnTTbxKIcL2CHY";
const decodedValue = jwt.verify(token, "myesecretkey");
추가적으로 JWT는 암호키를 몰라도 decode가 가능함. 대신 변조가 불가능. 되도록 개인정보, 비밀번호는 담지 않도록 해야함.