스파르타코딩클럽 내일배움캠프 Node.js 숙련주차 강의를 들으며 공부한 것을 적은것입니다.

JWT(Json Web Token)란?

  • JSON 형태의 데이터를 안전하게 교환하여 사용할 수 있게 한다.
  • 인터넷 표준으로 자리잡은 규격.
  • 여러가지 암호화 알고리즘을 사용할 수 있다.
  • header.payload.signature 의 형식.
  • header
    어떤 암호화를 사용하여 생성된 데이터인지 표현.
  • payload
    개발자가 원하는 데이터를 저장.
  • signature
    정상적인 토큰인지 확인할 수 있게 도와준다.
  • 누구나 복호화하여 보는것이 가능하므로, 중요한 정보는 담지 않도록 해야한다.

사용법

  1. jsonwebtoken 라이브러리 설치!
npm init
npm install jsonwebtoken
  1. 원하는 데이터 암호화
const jwt = require("jsonwebtoken");

const token = jwt.sign({ myPayloadData: 1234 }, "mysecretkey");
  1. 복호화
const jwt = require("jsonwebtoken");

const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0LCJpYXQiOjE2NzEzNzA0NzF9.RxThDoXIU0YAf1SJ3qj8UDN29Z5dpjzmB5du4oaRsyk"
const decodedValue = jwt.decode(token);
  1. 검증
const jwt = require("jsonwebtoken");

const token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJteVBheWxvYWREYXRhIjoxMjM0LCJpYXQiOjE2NzEzNzA0NzF9.RxThDoXIU0YAf1SJ3qj8UDN29Z5dpjzmB5du4oaRsyk"
const decodedValueByVerify = jwt.verify(token, "mysecretkey");

Access Token

사용자의 권한이 확인되었을 경우, 해당 사용자를 인증하는 용도로 발급하는 토큰.

  • Stateless
    서버가 죽었다 살아나도 동일한 동작.
    사용자의 인증 여부를 확인할 수는 있지만, 사용자 본인인지 확인할 수는 없다.

  • 사용자를 인증하는 모든 정보를 가지고 있다.
    가지고 있는 시간이 늘어날 수록 탈취의 위험이 크다.

Refresh Token

사용자의 모든 인증정보를 관리하는 것이 아닌, 특정한 사용자가 Access Token을 발급받게 하기 위한 용도로만 사용.

  • 저장소 또는 별도의 DB에 저장하여 관리.
  • 사용자에게 발급한 Access Token이 탈취당할 경우 피해를 최소화 하기위해 사용.
profile
배움에는 끝이없다

0개의 댓글