Skip to content

Latest commit

 

History

History
26 lines (24 loc) · 2.52 KB

세션과 jwt.md

File metadata and controls

26 lines (24 loc) · 2.52 KB

세션 기반 인증

  • 장점
    1. 서버 측 상태 관리 : 세션은 서버 측에서 사용자의 상태를 저장함. 이를 통해 사용자가 누구이지, 어떤 권한을 가지고 있는지 등의 정보를 서버가 직접 관리할 수 있음
    2. 보안성 : 세션 ID는 브라우저에 저장되며, 실제 사용자 데이터는 서버 측에 저장됨. 이로 인해 사용자 정보가 외부에 노출될 위험이 줄어듦
    3. 변경 용이성 : 사용자의 권한 변경과 같은 상태 변경이 필요한 경우, 서버 측에서 즉시 세션 데이터를 업데이트 할 수 있음
  • 단점
    1. 스케일링 문제 : 세션은 서버의 메모리를 사용하기 때문에, 대규모 트래픽을 처리하는 애플리케이션에서 서버 리소스에 부담을 줄 수 있음
    2. 로드 밸런싱 문제 : 세션 정보가 한 서버에 저장되어 있는 경우, 로드 밸런서를 사용하여 여러 서버에 요청을 분산시키는 환경에서 세션 관리가 복잡해 질 수 있음
  • 문득 드는 생각
    • 세션 정보의 손실을 어떻게 대응할까?
      1. 세션 저장소 사용
        • 세션 정보를 서버의 메모리에 저장하는 대신, Redis, MongoDB와 같은 외부 세션 저장소를 사용하는것.
        • 이러한 외부 저장소를 사용하면 서버가 다시 시작되거나 스케일 아웃되어도 세션 정보가 유지됨
      2. 스티키 세션
        • 로드 밸런서를 사용하여 여러 서버로 요청을 분산할 때, 특정 사용자의 모든 요청을 동일한 서버로 전송하는 방식
        • 이를 통해 사용자는 항상 같은 서버와 상호작용하므로, 세션 일관성 문제를 해결할 수 잇음
      3. 데이터베이스 세션
        • 세션 정보를 데이터베이스에 저장하는 방법
        • 세션 정보를 중앙화된 위치에 저장할 수 있으므로 여러 서버 간에 세션을 공유할 수 있음\

JWT 기반 인증

  • 장점
    • 상태 비저장(stateless) : JWT는 서버 측에 상태 정보를 저장하지 않음. JWT에는 사용자의 인증 정보가 포함되어 있으며, 이 토근을 검증하기만 하면 됨. 서버 리소스 부담 줄어듦
    • 확장성 : 상태 비버장 특성으로 인해, 서버의 확장성과 로드 밸런싱이 용이해짐. 어떤 서버에서든 토큰만 유효하다면 인증 처리 가능
    • 다양한 플랫폼 및 도메인 간 인증 : 하나의 JWT로 다양한 애플리케이션과 서비스 간에 사용자 인증 정보를 공유할 수 있음