본문 바로가기
  • 시 쓰는 개발자
Spring

spring security - 인증 방식에 따른 차이 (세션과 토큰방식)

by poetDeveloper 2023. 1. 3.

<세션>

세션 기반 자격 증명 방식이란, 인증된 사용자의 정보를 서버 측에서 세션 형태로 하여 세션 저장소에 저장하는 방식을 말함. 클라이언트의 request에는 서버로 전달되는 쿠키가 있는데 이 쿠키 안에 세션 id가 담겨서 전달됨. 그리고 이걸 서버에서 관리함. 즉, 인증된 사용자의 정보를 서버의 세션 저장소에서 관리하고 클라이언트에겐 해당 사용자를 구분할 세션 Id만 전달

 

  • 서버에서 세션id 생성(고유한 값) → 클라 쿠키에 저장돼서 request시 쿠키랑 같이 서버로 전송해서 인증된 사용자임을 증명 // 세션 데이터가 많아질수록 서버 부담 증가
  • 세션 id만 클라에서 사용 → 적은 네트워크 트래픽
  • 서버에서 세션 정보 관리 → 보안성 유리
  • 서버 여러개로 확장시 불리 → 세션 불일치 문제 발생 가능 (확장한 서버에 사용자 정보가 저장된 세션 저장소가 없는 경우)  http 요청을 받는 서버를 지정해서 요청을 보낼 수 없기 때문이다. 그래서 내가 요청을 보냈을 때 서버의 세션 저장소에 사용자 정보가 담겨있지 않으면 세션 불일치가 나는 것. => 외부 저장소로 분리하는 작업을 통해 보완 가능.
  • SSR 방식에 유리

 

<토큰>

세션 기반의 자격 증명 방식은 서버에 세션id를 저장해놓고, 클라의 요청때마다 세션id를 함께 쿠키에 담아 보내서 사용자의 상태를 유지. 그러나, 토큰 기반의 자격 증명 방식은 클라의 요청 때마다 토큰으로 사용자의 자격 증명 정보를 보냄. 그래서 서버에서 별도로 관리하는 게 없음. 토큰은 클라의 request header에 포함돼서 보내짐

 

  • request때마다 보내야함 -> 많은 네트워크 트래픽
  • 서버에서 토큰 관리 안함 -> 보안성 불리
  • 서버 확장성 유리 -> 서버에서 사용자 인증정보를 관리하지 않기 때문
  • 기본적으로 토큰 만료 전까지는 무효화 불가 -> 만료 기간을 짧게 설정해서 보완
  • CSR 방식에 유리

 

 

정리

  네트워크 트래픽 보안 확장성 방식
세션 적다 유리 불리 SSR 방식
토큰 많다 불리 유리 CSR 방식

 

'Spring' 카테고리의 다른 글

API 명세서 작성하기  (0) 2023.02.19
PUT과 PATCH의 차이점  (0) 2023.02.19
WelcomePage란?  (0) 2022.12.11
서블릿이란? (퍼옴)  (0) 2022.12.08
API란 무엇인가 (+REST API)  (0) 2022.11.22