우리는 제일 사용량이 많은 jsonwebtoken 라이브러리를 사용
npm init -y
npm i jsonwebtoken (-S)
const jwt = require("jsonwebtoken");
const token = jwt.sign(
{ myPayloadData: 1234 }, //jwt이용해서 payload설정
"mysecretkey"); // 암호화를 위한 비밀키
console.log(token);
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0LCJpYXQiOjE2Njc1NjE0NDB9.nvYSsLsT8jp7IfkbB2seCNeuLqRBgrrzDjKRFXjvoUE
이렇게 데이터가 출력 => . 3개로 나뉘는 모습을 볼 수 있음.jwt.io에서 저 암호화된 코드를 붙여넣어주면
const jwt = require("jsonwebtoken");
const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0LCJpYXQiOjE2Njc1NjE0NDB9.nvYSsLsT8jp7IfkbB2seCNeuLqRBgrrzDjKRFXjvoUE";
const decodedValue = jwt.decode(token);
//jwt의 payload를 확인하기 위해서 사용한다.
검증은
1. 암호화를 할 때 사용한 비밀키가 일치하는 검증
2. 해당하는 jwt가 만료되었는지 검증
const jwt = require("jsonwebtoken");
const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0LCJpYXQiOjE2Njc1NjE0NDB9.nvYSsLsT8jp7IfkbB2seCNeuLqRBgrrzDjKRFXjvoUE";
const decodedValueByVerify = jwt.verify(token, "mysecretkey");
틀린 비밀키를 입력하면 error가 뜨게 됨.
1초뒤에 만료되는 jwt를 만들고(expiresIn:"1s"), 1.5초 뒤에 jwt를 검증(verifyToken)하게 되면 error 발생