ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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");

     

    만약 코드가 변조되었다면 에러가 발생한다. 

    반응형

    댓글

Designed by Tistory.