• JWT (Json Web Token)
  • 데이터가 JSON으로 이루어져 있는 토큰

세션 기반 인증 vs 토큰 기반 인증

  • 사용자의 로그인 상태를 서버에서 처리
    • 세션 기반 인증
    • 토큰 기반 인증

세션 기반 인증

  • 서버가 사용자의 로그인 상태를 기억
  • 사용자 > 로그인 > 서버 > 정보저장 > 세션 id 발급 > 요청 > 세션 조회 > 응답
  • 세션 id는 브라우저의 쿠키에 저장
  • 세션 저장소: 메모리, 디스크, 데이터베이스
  • 단점
    • 서버를 확장하기가 어려움
      • 서버의 인스턴스가 여러개가 되면 세션 공유가 필요해 별도의 데이터베이스를 만들어야 한다

토큰 기반 인증

  • 로그인 이후 서버가 만들어주는 문자열
    • 문자열에는 로그인 정보가 들어있고, 해당 정보가 서버에서 발급되었음을 증명하는 서명
  • 사용자 > 로그인 > 서버 > 토큰 발급 > 토큰과 함께 요청 > 토큰 유효성 검사 > 응답
  • 서명 데이터는 해싱 알고리즘을 통해 생성
    • HMAC SHA256, RSA, SHA256 알고리즘
  • 서버에서 만들어주기때문에 무결성이 보장
    • 정보가 변경되거나 위조되지 않음
  • API 요청할때마다 토큰을 함께 요청
  • 장점
    • 로그인 정보를 기억하기 위해 사용하는 리소스가 적다는 것
    • 확장성이 높다. (인스턴스끼리 로그인 상태를 공유할 필요가 없음)

+ Recent posts