-
Nodejs JWT(JsonWebToken) 정리Nodejs 2021. 7. 31. 11:38
JWT란?
- JSON 형태의 데이터를 안전하게 교환
- 인터넷 표준 규격
- 여러가지 암호화 알고리즘 사용 가능
- header, payload, signature의 형식으로 3가지 데이터를 포함
- secret-key를 이용해서 암호화하며 secret key를 몰라도 decode가 가능하다.
- 즉 민감한 정보는 담지 말아야 한다.
- 특정 언어로써 존재하는게 아니고, 개념으로써 존재
☞ 질문 - JWT는 쿠키, 세션과 어떻게 다를까?
- 데이터를 교환하고 관리하는 방식인 쿠키/세션과 달리, JWT는 단순히 데이터를 표현하는 방식
- 서버를 stateless로 관리할 수 있다.
- 서버가 죽었다가 살아나도 똑같은 동작을 할 수 있다.
< JWT 사용하기 >
1. JWT 설치
npm init npm i jsonwebtoken -S
2. 데이터 암호화하기
const jwt = require("jsonwebtoken"); const token = jwt.sign({ myPayloadData: 1234 }, "mysecretkey"); console.log(token);
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0fQ.6XFgtNglH9hIzz5y8jAcI0g5kDnlAvnTTbxKIcL2CHY
3. secret key 없이 복호화하기
const jwt = require("jsonwebtoken"); const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0fQ.6XFgtNglH9hIzz5y8jAcI0g5kDnlAvnTTbxKIcL2CHY"; const decodedValue = jwt.decode(token);
jwt는 누구나 복호화가 가능하다.
하지만 secret key가 없으면 복호화한 데이터가 변조되었는지 알 수 없다.
4. secret key를 이용해 복호화하기
const jwt = require("jsonwebtoken"); const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0fQ.6XFgtNglH9hIzz5y8jAcI0g5kDnlAvnTTbxKIcL2CHY"; const decodedValue = jwt.verify(token, "myesecretkey");
만약 코드가 변조되었다면 에러가 발생한다.
반응형'Nodejs' 카테고리의 다른 글
Nodejs: Prettier 사용하기 (0) 2021.08.31 Nodejs: socket.io 모듈 사용 정리 (0) 2021.08.16 Nodejs: Sequelize를 이용한 사용자 모델 생성 (0) 2021.08.10 Nodejs: Mysql사용을 위한 Sequelize 설정 (0) 2021.08.10 ES6 Javascript 문법 정리 (0) 2021.07.20