CS 17 세션 토큰

이상인·2023년 9월 16일
0

세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.

세션 기반 인증과 토큰 기반 인증은 웹 애플리케이션과 같은 시스템에서 사용자 인증 및 권한 부여를 달리 구현하는 두 가지 주요 방식입니다.

이들 간의 주요 차이점은 아래와 같습니다

1.저장 위치

세션 기반 인증

  • 세션 기반 인증은 서버 측에서 관리됩니다.
  • 로그인한 사용자에 대한 세션 정보(세션 ID)는 서버에 저장되며, 클라이언트와 연결된 세션 쿠키를 통해 식별됩니다.

토큰 기반 인증

  • 토큰 기반 인증은 클라이언트 측에서 관리됩니다.
  • 로그인한 사용자에게 토큰(주로 JSON Web Token 또는 JWT)이 제공되며, 이 토큰은 클라이언트 측에서 저장됩니다.
  1. 상태 유무:

세션 기반 인증

  • 서버 측에서 세션을 유지하므로 상태를 가집니다.
  • 서버에 저장된 세션 정보를 이용해 사용자를 식별하고 세션의 상태를 관리합니다.

토큰 기반 인증

  • 서버 측에서 상태를 유지하지 않고 상태가 없는(stateless) 방식으로 동작합니다.
  • 클라이언트가 토큰을 제공하면 서버는 이를 검증하고 필요한 정보를 추출하여 사용자를 인증합니다.
  1. 확장성:

세션 기반 인증

  • 서버 측에서 세션을 관리하므로 세션 수가 많아지면 서버 부하가 증가할 수 있습니다.
  • 따라서 확장성이 일부 제한될 수 있습니다.

토큰 기반 인증

  • 상태를 가지지 않으므로 서버의 확장성이 향상됩니다.
  • 서버 간의 로드 밸런싱이 용이하며, 다수의 클라이언트와 서버 간에 효율적인 분산 아키텍처를 구성할 수 있습니다.
  1. 보안:

세션 기반 인증

  • 서버 측에서 세션을 안전하게 관리해야 합니다.
  • 세션 하이재킹 및 CSRF(Cross-Site Request Forgery)와 같은 보안 취약점에 노출될 수 있습니다.

토큰 기반 인증

  • 토큰은 서명되어 있고 필요한 경우 암호화될 수 있으므로 데이터 무결성과 보안을 강화할 수 있습니다.
  • 또한 CORS(Cross-Origin Resource Sharing)와 같은 시나리오를 더 쉽게 처리할 수 있습니다.
  1. 로그아웃 및 세션 관리:

세션 기반 인증

  • 로그아웃 시 서버에서 세션을 삭제해야 합니다.
  • 세션 관리 및 타임아웃 정책을 구현해야 합니다.

토큰 기반 인증

  • 클라이언트가 토큰을 삭제하거나 만료되도록 설정하면 로그아웃 및 세션 관리가 비교적 간단합니다.
  1. 분산 시스템:

세션 기반 인증

  • 여러 서버 간에 세션을 동기화해야 하므로 분산 환경에서 관리하기 어려울 수 있습니다.

토큰 기반 인증

  • 토큰은 서버 간에 공유되거나 중앙 집중식 인증 서버에서 발급될 수 있으므로 분산 환경에서 유용합니다.

세션 기반 인증과 토큰 기반 인증은 각각의 장단점이 있으며, 사용 사례와 요구 사항에 따라 선택되어야 합니다. 최근에는 특히 웹 API 및 분산 시스템에서 토큰 기반 인증이 더 많이 사용되고 있습니다.

0개의 댓글