세션/쿠키 기반 인증과 토큰 기반 인증
세션/쿠키 기반 인증 플로우
- 사용자가 로그인을 시도하면 서버 사용자의 인증 정보를 검증
- 인증이 성공하면, 서버에서 해당 사용자의 세션을 생성하고 세션 ID를 발급
- 발급된 세션 ID는 쿠키에 저장되어 사용자의 브라우저로 전송
- 사용자가 다음 요청을 할 때, 브라우저는 쿠키에 저장된 세션 ID를 서버에 함께 전송
- 서버는 세션 ID를 확인하여 사용자를 식별
토큰 기반 인증 플로우
- 사용자가 로그인을 시도하면, 서버는 사용자의 인증 정보를 검증
- 인증이 성공하면, 서버는 사용자의 정보와 권한을 포함하는 토큰(JWT 등)을 생성하고 사용자에게 전송
- 사용자는 토큰을 저장하고, 이후의 모든 요청에 토큰을 포함시켜 서버에 전송
- 서버는 요청받은 토큰을 검증하여 사용자를 인증
장단점 비교
기준 | 세션 /쿠키 | 토큰 |
상태 관리 | 서버 측에서 상태를 관리 (상태 유지) | 클라이언트 측에서 상태를 관리 (무상태) |
데이터 저장 위치 | 서버 | 클라이언트 (토큰 형태) |
확장성 | 제한적 (세션 정보 동기화 필요) | 높음 (무상태 특성) |
보안 | 쿠키 탈취 시 세션 탈취 가능성 | 토큰 탈취 시 바로 사용 가능성 |
서버 부하 | 높음 (세션 관리 필요) | 낮음 (무상태, 검증만 수행) |
유연성 | 낮음 (특정 서버나 도메인에 종속적) | 높음 (다양한 플랫폼/서비스 간 인증에 용이) |
디폴트 인증 체계 분석
**설정에 따른 추가 필터 확인
- http.build
- http.authorizeHttpRequests
- http.formLogin
- http.httpBasic
'Spring' 카테고리의 다른 글
Mappstruct 사용 (0) | 2024.03.11 |
---|---|
SpringSecurity 프로젝트 적용 (0) | 2024.03.03 |
SpringSecurity 인증 (0) | 2024.03.01 |
SpringSecurity 아키텍쳐이해하기 (0) | 2024.02.24 |
N+1 문제 해결(JPA) (1) | 2024.02.12 |