• 세션 방식과 토큰 방식은 웹 애플리케이션에서 사용자 인증에 사용되는 대표적인 두가지 방법
  • 세션 방식
    • 세션이라는 용어는 클라이언트와 서버 간의 인증을 위해 유지되는 상태 정보를 저장하는 서버의 저장공간을 의미

    • 사용자에게 인증값을 생성하여 전달하고 서버에서도 해당 인증값을 메모리상에 저장하여 검증

    • 세션 방식 인증 절차

      image.png

      • 사용자 로그인 요청
      • DB에서 로그인 정보 확인 및 세션ID 생성
      • 서버 메모리에 세션ID값을 저장(또는 캐싱DB)
      • 세션ID를 사용자에게 전달
      • 사용자는 세션ID를 쿠키파일로 저장하고, API 요청시 세션ID를 담아 요청
      • 메모리상의 세션값과 비교/검증 후 API 응답
    • 쿠키

      • 쿠키는 웹사이트가 사용자의 웹 브라우저에 저장하는 작은 텍스트 파일
        • 대표적인 예시는 비밀번호 저장
        • “비밀번호를 저장하시겠습니까?” 등 쿠키파일로 id/pw가 웹브라우저에 저장
      • 세션방식에서는 쿠키에 검증값(세션ID)를 넣어 사용자에게 전달하는 세션ID를 담는 파일로 활용
    • 세션방식의 단점

      • 대규모 로그인 및 HTTP요청시 서버 메모리 부족
      • 메모리 접근 과정의 성능문제
      • 메모리 기반의 세션관리시 서버 확장시 관리불가
  • 토큰 방식 (Token-Based Authentication)
    • 토큰방식 로그인은 JWT토큰 기반의 인증값을 생성하여 사용자에게 전달

    • 토큰방식 로그인의 특이점은 토큰을 서버에 저장하지 않고, 토큰을 자체 로직으로 검증한다는것

    • 토큰 방식 인증 절차

      image.png

      • 사용자 로그인 요청
      • DB에서 로그인 정보 확인 및 JWT 토큰 생성
      • 토큰을 사용자에게 전달하고 사용자는 브라우저의 로컬스토리지에 토큰 저장
      • 사용자는 API 요청시 토큰을 담아 API요청
      • 토큰을 자체 로직으로 검증후 API응답
    • 토큰방식의 단점

      • 토큰을 탈취당하게 되면 서버에서 해당 토큰을 삭제할 방법이 없음