Spring

TIL - Cookie, Session, Token, JWT, Filter에 대하여

카페인 고양이 2025. 3. 28. 20:21

📌 오늘의 키워드

Cookie, Session, Token, JWT, Filter


1. 📖 오늘 학습한 내용 요약

  • 웹 보안과 인증 방식의 전반적인 흐름에 대해 학습
  • Cookie, Session, Token의 차이점과 보안상의 특징 이해
  • JWT의 구조와 목적 파악
  • Filter의 역할과 활용 목적 간단 정리

2. ✅ 주요 개념 & 정리

📌 1. Cookie

  • 웹 브라우저에 저장되는 데이터로, 서버가 클라이언트의 상태를 기억할 수 있게 해줌
  • 주로 로그인 상태 유지, 장바구니 정보 저장 등에 활용
  • 보안에 취약
    • 민감한 정보는 절대 저장하지 말 것
    • 사용자가 쿠키를 임의로 수정할 수 있기 때문

📌 2. Session

  • 서버에 저장되는 정보로, 사용자의 로그인 상태를 관리
  • 클라이언트에는 오직 Session ID만 저장
  • Session ID가 탈취되더라도 서버에 민감한 정보는 없음
  • 만료 시간 설정으로 보안을 강화
    • HttpSession은 최근 요청 시간을 기준으로 만료 시간 갱신

📌 3. Token

  • 인증/인가를 위한 디지털 문자열
  • 사용자의 신원과 권한을 증명하고 요청의 유효성을 검증
  • Session과 달리 클라이언트가 Token을 보관
    • 서버는 Stateless하게 동작 → 확장성이 뛰어남
  • Cookie를 사용할 수 없는 모바일 환경 등에서도 사용 가능
  • Payload는 암호화되지 않음 → 민감한 정보는 포함하지 말 것
  • 만료 시간 설정을 통해 탈취 시의 피해를 최소화

📌 4. JWT (JSON Web Token)

  • 인증에 필요한 정보들을 담은 JSON 기반의 Token
  • Signature를 통해 위조 여부를 검증할 수 있음
  • JWT의 목적은 정보 보호가 아니라 '위조 방지'
  • 구조: Header + Payload + Signature
    • Payload는 Base64 인코딩만 되어있고 암호화는 X
    • 민감한 정보는 넣지 않도록 주의

📌 5. Filter

  • 공통 관심 사항(AOP)을 처리하는 입구 역할
  • 인증, 인가, 로깅, 인코딩 처리 등에서 주로 사용
  • 컨트롤러에 도달하기 전 요청을 가로채서 전처리 가능
    • 예: 인증이 필요한 페이지 접근 시 로그인 여부 확인

3. 🔍 내가 겪은 문제와 해결 과정

  • 처음엔 Token과 Session이 비슷하게 느껴져서 혼동
  • "서버가 상태를 기억하는가?"를 기준으로 정리하니 이해 쉬워짐
    • Session: 서버가 상태 기억
    • Token: 서버는 Stateless, 클라이언트가 Token 저장
  • JWT의 Payload는 암호화가 아닌 단순 인코딩이라는 점이 인상적이었음

4. 📌 느낀 점 & 회고

  • 인증 방식은 단순히 기능이 아니라 보안과 설계 철학이 함께 들어있는 주제
  • Cookie, Session, Token, JWT는 각자의 특징과 사용처가 다르므로 상황에 맞는 선택이 중요
  • Filter는 웹 요청을 컨트롤하는 핵심 기술 중 하나로, 스프링 보안에서 자주 만나게 될 듯
  • JWT가 정보를 보호하지는 않는다는 점, 앞으로 프로젝트에 적용할 때 유의해야겠다고 느낌

5. 📅 내일 할 일 / TODO

  • Spring Security에서 Filter가 어떻게 동작하는지 구체적으로 정리
  • JWT 구조와 Signature 검증 방식 직접 코드로 실습
  • 세션 기반 인증과 토큰 기반 인증을 비교하는 예제 구현
  • OAuth2와 JWT의 차이도 정리해보기

'Spring' 카테고리의 다른 글

20250415 - spring 심화 1일차  (0) 2025.04.15
TIL - Schedule Develop 트러블 슈팅  (0) 2025.04.04
TIL - Bean Validation, EnableJpaAuditing  (0) 2025.04.02
TIL - 예외처리  (0) 2025.04.01
TIL - Spring DI/IOC란 무엇인가?  (0) 2025.03.27