전통적인 세션 ID 기반 인증과 JWT(Json Web Token) 기반 인증 비교

HYEONG HWAN, MUN/ 5월 10, 2025/ 미분류/ 0 comments

https://blog.lael.be/post/12495

로그인 세션 관리에서 전통적인 세션 ID 기반 인증JWT(Json Web Token) 기반 인증은 가장 많이 사용되는 두 가지 방식입니다. 아래는 이 둘의 차이점과 장단점을 비교한 표입니다:

항목 세션 ID 기반 인증 JWT 기반 인증
인증 방식 서버가 세션 ID를 생성하고 클라이언트에 전달 (주로 쿠키에 저장) 서버가 JWT를 생성하고 클라이언트에 전달 (주로 헤더나 로컬스토리지/쿠키에 저장)
서버 저장소 필요 필요 (서버에 세션 저장) 불필요 (토큰 자체에 정보 포함)
확장성 낮음 (세션 저장소 공유 필요) 높음 (무상태 Stateless 구조)
보안성 세션 탈취 위험, 하지만 서버에서 세션 무효화 가능 탈취 시 만료 전까지 유효, 무효화 어려움 (추가 로직 필요)
토큰 크기 작음 (세션 ID) 큼 (Base64 인코딩된 JSON)
무효화 처리 서버에서 세션 삭제 보통 불가능, 블랙리스트 관리 등 별도 구현 필요
관리 편의성 서버가 통제 가능 클라이언트 주도, 설계 복잡
사용처 전통적인 웹 앱 (서버 렌더링) SPA, 모바일 앱, 마이크로서비스 구조 등

간단 요약

  • 세션 ID 기반 인증

    • 서버 중심. 서버가 상태를 유지함.

    • 세션을 쉽게 만료시키거나 무효화할 수 있어 보안 제어가 용이.

    • 수평 확장 시 세션 공유 필요 (ex. Redis 사용).

  • JWT 기반 인증

    • 클라이언트 중심. 서버는 상태를 유지하지 않음 (Stateless)

    • 확장성에 유리, 마이크로서비스에 적합.

    • 무효화가 어려워 보안 이슈에 취약할 수 있음.


선택 기준

상황 추천 방식
전통적인 웹 사이트 (로그인, 로그아웃, 쇼핑몰 등) 세션 ID
SPA, 모바일 앱, API 서버 (마이크로서비스 구조) JWT
인증 정보 자주 바뀌는 경우 (권한, 유효시간 등) 세션 ID
서버 간 인증 필요 (S2S, 분산 인증 등) JWT

jwt는 발급된 후에는 변경이나 제어가 불가능 하기 때문에, 덜 중요한 곳에서 쓰는게 좋음. 그리고 유효기간을 짧게해서 주기적으로 유효성을 검사하도록.

서버 저장소 확인할 필요가 없어서 인증부하가 낮음.

token 발급자 (issuer)를 믿고 동작하는 서비스는 jwt 가 낫다.

 

아무튼, JWT, JWE 구현 기법 공부하다가, 알아봄.

https://openauth.js.org/  예제가 잘 구현되어 있더라. 한번쯤 구동해보길 권장함.

 

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*