JWT 이해

hwakyungChoi·2020년 9월 18일
  • 회원 인증 시스템을 위해서 JWT 기술을 이용합니다.
    - JWT (JSON WEB TOKEN)의 약자로 데이터가 JSON으로 이루어져 있는 토큰을 의미
    • 두 개체가 서로 안전하게 정보를 주고 받을 수 있도록 웹 표준으로 정의된 기술

세션 기반 인증과 토큰 기반 인증의 차이

  • 세션 기반 인증 시스템
    - 서버가 사용자가 로그인 중임을 기억하고 있다는 뜻
    • 사용자 로그인 -> 서버는 세션 저장소에 사용자의 정보 조회 -> 세션 id 발급
      -> 발급된 id는 브라우저의 쿠키에 저장 -> 사용자가 요청을 보낼 때마다 -> 서버는 세션 조회 후, 로그인 여부 결정 -> 작업 처리 후 응답
    • 세션의 저장소는 메모리, 디스크, 데이터베이스
    • 세션 기반 인증의 단점 : 서버를 확장하기 번거로움 -> 서버의 인스턴스가 여러 개가 된다면, 모든 서버끼리 같은 세션을 공유해야 하므로! -> 세션 전용 데이터베이스가 필요해짐
  • 토큰 기반 인증 시스템
    - 로그인 이후 서버가 만들어 주는 문자열이 토큰
    • 로그인 정보와 발급되었다는 증명서와 같은 서명이 들어있음
    • 해싱 알고리즘을 통해 만들어짐-> HMAC SHA256 또는 RSA SHA256 알고리즘이 사용
    • 무결성이 보장 -> 정보가 변경되거나 위조되지 않았음을 의미하는 성징
    • 로그인 -> 서버에서 토큰 발급 -> API 요청할 때 토큰과 함께 요청 -> 토큰 유효성 검사 -> 결과 처리 및 응답
    • 로그인 정보를 기억하기 위해 사용되는 리소스가 적음
    • 서버의 확장성이 높으며 서버의 인스턴스가 여러 개 늘어나도 서버끼리 공유할 필요가 없음

0개의 댓글