Spring

SpringSecurity 인증 방식

쭈녁 2024. 3. 2. 01:25

세션/쿠키 기반 인증과 토큰 기반 인증

 

세션/쿠키 기반 인증 플로우

  1. 사용자가 로그인을 시도하면 서버 사용자의 인증 정보를 검증
  2. 인증이 성공하면, 서버에서 해당 사용자의 세션을 생성하고 세션 ID를 발급
  3. 발급된 세션 ID는 쿠키에 저장되어 사용자의 브라우저로 전송
  4. 사용자가 다음 요청을 할 때, 브라우저는 쿠키에 저장된 세션 ID를 서버에 함께 전송
  5. 서버는 세션 ID를 확인하여 사용자를 식별

토큰 기반 인증 플로우

  1. 사용자가 로그인을 시도하면, 서버는 사용자의 인증 정보를 검증
  2. 인증이 성공하면, 서버는 사용자의 정보와 권한을 포함하는 토큰(JWT 등)을 생성하고 사용자에게 전송
  3. 사용자는 토큰을 저장하고, 이후의 모든 요청에 토큰을 포함시켜 서버에 전송
  4. 서버는 요청받은 토큰을 검증하여 사용자를 인증

 

장단점 비교

기준  세션 /쿠키 토큰
상태 관리 서버 측에서 상태를 관리 (상태 유지) 클라이언트 측에서 상태를 관리 (무상태)
데이터 저장 위치 서버 클라이언트 (토큰 형태)
확장성 제한적 (세션 정보 동기화 필요) 높음 (무상태 특성)
보안 쿠키 탈취 시 세션 탈취 가능성 토큰 탈취 시 바로 사용 가능성
서버 부하 높음 (세션 관리 필요) 낮음 (무상태, 검증만 수행)
유연성 낮음 (특정 서버나 도메인에 종속적) 높음 (다양한 플랫폼/서비스 간 인증에 용이)

 

디폴트 인증 체계 분석

SpringSecurityConfg 예시

 

**설정에 따른 추가 필터 확인

  • 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