2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

[백엔드] 기술 면접 Top30 - #17 세센과 토큰 기반 인증의 차이

2023. 9. 23. 12:11ㆍ[백엔드] 기술면접
반응형

세션과 토큰 기반 인증

 

세션 기반 인증, 토큰 기반 인증

  • 웹 애플리케이션 및 다른 서비스에서 사용되는 두 가지 주요 인증 방식이다.
  • 두 방식은 사용자를 인증하고 인가하는 방법에 차이가 있다.

 

세션 기반 인증

  • 세션 기반 인증은 서버 측에서 사용자의 상태를 유지하고 관리하는 방식이다.
  • 사용자가 로그인하면 서버는 사용자를 식별하는 세션 ID를 생성하고, 이 세션 ID를 클라이언트에게 부여한다.
  • 세션 ID는 typically 쿠키를 통해 클라이언트에 저장되며, 이후 사용자의 모든 요청은 서버로 전송되고, 서버는 클라이언트가 제공한 세션 ID를 확인하여 해당 세션에 대한 상태를 확인하고 사용자를 인증하며 권한을 부여한다.
  • 세션은 일반적으로 서버 측에서 관리되므로, 클라이언트는 세션 정보에 직접 접근할 수 없다.

토큰 기반 인증

  • 토큰 기반 인증은 클라이언트 측에서 사용자의 상태를 관리하는 방식이다.
  • 사용자가 로그인하면 서버는 클라이언트에게 액세스 토큰(Access Token)을 발급한다.
  • 이 토큰은 사용자를 인증하고 권한을 부여하는 데 사용되며, 클라이언트는 모든 요청에서 이 액세스 토큰을 포함하여 서버로 보낸다.
  • 서버는 액세스 토큰을 검증하고, 해당 토큰이 유효하면 사용자를 인증하고 요청을 처리한다.
  • 토큰은 일반적으로 JSON Web Tokens (JWT) 형식으로 사용되며, 클라이언트는 토큰을 디코딩하여 사용자 정보 및 권한을 확인할 수 있다.

주요 차이점

  • 세션 기반 인증은 서버가 사용자 상태를 관리하고 클라이언트에 대한 상태를 저장한다.
  • 토큰 기반 인증은 클라이언트 측에서 상태를 관리하고 서버는 간단히 토큰을 검증한다.
  • 세션 기반 인증은 보통 쿠키를 사용하여 세션 ID를 저장하고 전송한다.
  • 토큰 기반 인증은 HTTP 헤더나 URL 매개변수를 통해 토큰을 전달한다.
  • 토큰 기반 인증은 서버와 클라이언트가 분리되어 있기 때문에 분산 시스템에서 더 용이하게 사용된다.
  • 세션 기반 인증은 상태 관리를 위해 서버 측 저장 공간을 필요로 하지만, 토큰 기반 인증은 서버에서 상태를 저장할 필요가 없으므로 서버 부하가 덜하다.

요약

세션 기반 인증은 서버가 사용자 상태를 관리하고 세션 ID를 사용하며, 클라이언트는 세션 정보에 직접 접근할 수 없다. 토큰 기반 인증은 클라이언트가 사용자 상태를 관리하고 액세스 토큰을 사용하며, 서버는 토큰을 검증한다. 토큰 기반 인증은 분산 시스템에서 용이하며 서버 부하가 적지만, 선택은 애플리케이션 요구사항과 보안 고려사항에 따라 달라진다.
반응형