GDG on Campus: SSWU 6th/Winter Blog Challenge

[Winter Blog Challenge] 백엔드 인증의 핵심 기술, JWT란 무엇인가? (Chapter Member 최이나)

gdgoc-sswu 2025. 6. 6. 05:16

안녕하세요! GDGoC Chapter Member 백엔드 파트 최이나입니다.

 

우리가 평소에 일상적으로 사용하는 “로그인 상태 유지하기” 기능은 어떻게 가능한 걸까요? 이전에는 서버가 직접 상태를 기억하는 세션기반 인증이 가장 많이 쓰였으나 최근에는 JWT 라는 방식이 등장하여 자주 사용되고 있습니다. 이 글에서는 세션 인증의 기본 원리부터 JWT가 등장하게 된 배경, 그리고 JWT의 구조와 동작 방식까지 소개하려고 합니다.

 

세션 기반 인증이란?

세션 기반 인증은 흐름으로 이해하는 것이 좋은데요

  1. 사용자가 로그인 정보를 서버에 보냄
  2. 서버가 사용자를 인증하고, 세션 ID를 생성
  3. 세션 ID를 클라이언트에 쿠키로 전달
  4. 클라이언트는 이후 요청마다 쿠키에 담아 보냄
  5. 서버는 세션 ID를 통해 해당 사용자의 로그인 상태를 확인

이러한 흐름으로 동작합니다.

 

서버에서 세션을 제어하므로 비교적 보안에 강하고, 세션 무효화가 쉽다는 장점이 있지만,

 

여러 단점들도 있습니다.

 

서버가 사용자 상태를 기억해야 해서 메모리를 많이 차지하고, 분산 서버 환경에서 세션 동기화가 필요하기 때문에 복잡해진다는 단점이 있습니다.

 

JWT 의 등장

JWT 는 세션 인증의 이런 한계를 보완하기 위해 나온 Stateless (상태를 기억하지 않는) 인증 방식입니다.

서버는 사용자 정보를 담은 토큰을 발급하고, 클라이언트가 그 토큰을 직접 보관하며 서버에 인증을 요청합니다.

 

따라서 JWT 는 세션과 로그인 흐름도 다른데요

  1. 사용자가 로그인 정보 제출
  2. 서버가 JWT를 만들어 응답
  3. 클라이언트는 이 토큰을 저장 (보통 로컬 스토리지나 쿠키에)
  4. 이후 요청할 때마다 토큰을 HTTP 헤더에 담아 보냄
  5. 서버는 토큰의 서명을 검증하여 인증 여부 판단

이렇게 진행되게 됩니다.

 

JWT 의 구조

JWT 는 점 으로 구분된 3개의 문자열로 구성되어 있습니다.

[ 헤더 . 페이로드 . 서명 ]

 

예를들어 아래와 같이 구성됩니다.

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJ1c2VySWQiOiIxMjM0NSIsInJvbGUiOiJ1c2VyIn0. dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk

 

    헤더(Header): 토큰의 타입과 서명 알고리즘

    페이로드(Payload): 사용자 정보 (예: id, 권한 등)

    서명(Signature): 위조 방지를 위한 검증 코드

 

이 구조 덕분에 서버는 별도로 세션을 저장하지 않고도 사용자 정보를 확인할 수 있어요.

 

 

 

 

세션 VS JWT 토큰

항목 세션 인증 JWT 인증
상태 유지 서버가 세션 저장 클라이언트가 토큰 저장
확장성 낮음 (서버에 의존) 높음 (서버 상태 불필요)
로그아웃 처리 서버 세션 삭제 별도 블랙리스트 관리 필요
보안 세션 탈취 위험 토큰 탈취 위험 (HTTPS 필수)

 

위 표에서 알 수 있듯이, JWT는 서버가 상태를 기억하지 않아도 되어 확장성과 유연성이 뛰어난 인증 방식입니다.

 

특히 최근처럼 프론트엔드와 백엔드가 분리된 구조(SPA, 모바일 앱 등)**가 많아진 환경에서는 서버가 클라이언트의 상태를 기억하지 않는 구조가 더 적합하기도 합니다.

 

또한, JWT는 HTTP 헤더에 간단히 실어 보낼 수 있어 API 통신에 효율적이며,

 

사용자 정보를 직접 토큰 안에 담을 수 있기 때문에 인증뿐 아니라 권한 관리에도 유용하게 활용할 수 있습니다.

 

이처럼 간결하고 확장성 있는 인증 방식이라는 점이, 최근 JWT가 많은 개발 환경에서 선택받는 이유라고 볼 수 있습니다.

 

세션 기반 인증은 여전히 안정적이고 효과적인 방식입니다.

 

지만 마이크로서비스, 모바일 앱처럼 프론트엔드와 백엔드가 분리된 구조가 많아지면서

 

JWT의 유연한 인증 방식이 각광받고 있어요.

 

상황에 따라 적절한 인증 방식을 선택하는 것이 가장 중요할 것 같습니다.

 

 

이상 블로그 글을 마치겠습니다. 감사합니다 :)