📙 목차
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 | 중앙 인증 후 여러 서비스에서 토큰 검증 가능 |
간단한 사용자 설정 저장 | 쿠키 | 서버 부하 없이 클라이언트에서 직접 상태 유지 |
'Spring > 강의' 카테고리의 다른 글
[📙 숙련 Spring] 2-3. Token, JWT(JSON Web Token) (0) | 2025.05.16 |
---|---|
[📙 숙련 Spring] 2-2. Cookie, Session (2) | 2025.05.16 |
[📙 숙련 Spring] 1-3. Validation과 Bean Validation (4) | 2025.05.15 |
[📙 숙련 Spring] 1-2. Spring Bean 등록 (0) | 2025.05.15 |
[📙 숙련 Spring] 1-1. 객체 지향과 Spring 핵심 개념 (0) | 2025.05.15 |