Spring/강의

[📙 숙련 Spring] 2-1. 인증과 인가

가지코딩 2025. 5. 16. 16:01

📙 목차

  1. 인증과 인가
  2. Cookie vs Session vs JWT

1. 인증과 인가

인증(Authentication)

  • 사용자가 누구인지 신원을 확인하는 과정이다.
  • 주로 아이디, 비밀번호, 생체 정보 등을 통해 사용자의 신원을 검증한다.
  • ex, 로그인

 

인가(Authorization)

  • 인증이 완료된 사용자에게 어떤 권한이 있는지 확인하는 과정이다.
  • 즉, 사용자가 어떤 자원이나 기능을 사용할 수 있는지를 결정한다.
  • ex, 회원만 조회 가능한 게시글, 본인이 작성한 게시글 수정

 

  • 인증 = 누구인가?
  • 인가 = 무엇을 할 수 있는가?

2. Cookie vs Session vs JWT

이후 정리에서 나올 쿠키, 세션, JWT 에 대한 간략 정리

쿠키 (Cookie) 세션 (Session) JWT (JSON Web Token)
저장 위치 클라이언트 브라우저 서버 메모리 또는 저장소 클라이언트
(주로 로컬 스토리지 또는 쿠키)
용도 사용자 식별, 상태 유지, 설정 저장 사용자 인증 정보 및 상태 저장 사용자 인증, 권한 정보 토큰
전송 방식 HTTP 요청 시 자동 전송 (Cookie 헤더) 세션 ID가 쿠키로 클라이언트에 전달되고 요청 시 서버에서 조회 요청 시 헤더(주로 Authorization)에 포함
보안 암호화되지 않음,
옵션(HttpOnly 등) 사용
서버에서 관리해 상대적으로 안전 서명으로 위변조 방지, 자체 인증 토큰
만료 만료 시간 설정 가능,
브라우저 종료 시 삭제 가능
서버 세션 만료 시간에 따름 토큰 내 만료시간(exp) 설정
서버 부하 낮음 세션 관리로 서버 메모리 사용 발생 서버 상태 비저장(stateless), 확장성 좋음
확장성 보통 부하 증가 시 서버 확장 어려움 Stateless로 서버 확장에 유리

 

 

실무에서 선택 기준

상황 / 요구 주로 사용하는 방식 이유
전통적인 웹 애플리케이션 세션 + 쿠키 서버에서 상태 관리가 쉽고, 보안 및 세션 관리 용이
REST API / SPA (프론트-백 분리) JWT Stateless 구조로 서버 확장성 좋고, 클라이언트에서 토큰 직접 관리 가능
보안이 매우 중요한 서비스 세션 + HttpOnly 쿠키 쿠키에 HttpOnly 설정으로 XSS 공격 위험 감소
다중 도메인 / 마이크로서비스 JWT 중앙 인증 후 여러 서비스에서 토큰 검증 가능
간단한 사용자 설정 저장 쿠키 서버 부하 없이 클라이언트에서 직접 상태 유지