면접준비
세션 기반 인증과 토큰 기반 인증의 차이에 대해 설명해주세요.
샤르체
2024. 1. 29. 09:35
세션 기반 인증과 토큰 기반 인증은 웹 애플리케이션 및 API에서 사용되는 두 가지 주요한 인증 방식입니다. 각각의 특징을 살펴보겠습니다.
- 세션 기반 인증(Session-Based Authentication):
- 동작 방식: 사용자가 인증되면 서버 측에서 해당 사용자에 대한 세션을 생성하고, 이 세션 정보를 서버에 저장합니다. 클라이언트는 세션 식별자를 쿠키 또는 URL 매개변수와 같은 방법으로 전달하여 요청을 보냅니다.
- 장점:
- 보안: 세션 식별자는 클라이언트에 저장되지 않고, 서버 측에서만 관리되므로 보안이 높습니다.
- 로그인 유지: 사용자가 로그인 상태를 유지하는 동안 세션을 유지할 수 있으므로, 사용자 경험을 향상시킬 수 있습니다.
- 단점:
- 확장성 문제: 세션 정보를 서버에 저장하므로, 사용자 수가 많을수록 서버 부하가 증가할 수 있습니다.
- 상태 유지: 서버가 사용자의 세션 상태를 유지해야 하므로, 서버 측에서 추가적인 관리가 필요합니다.
- 토큰 기반 인증(Token-Based Authentication):
- 동작 방식: 사용자가 로그인하면 서버는 사용자에게 토큰을 발급합니다. 클라이언트는 이 토큰을 저장하고, 인증이 필요한 요청을 보낼 때마다 토큰을 함께 전송합니다.
- 장점:
- 확장성: 서버 측에서 세션을 유지할 필요가 없으므로, 서버 부하를 줄일 수 있습니다.
- 분산 환경 지원: 토큰을 사용하면 여러 서버 간에 인증 정보를 공유할 수 있어 분산 환경에서도 쉽게 사용할 수 있습니다.
- 단점:
- 토큰 관리: 클라이언트 측에서 토큰을 안전하게 관리해야 하므로, 보안 측면에서 주의가 필요합니다.
- 토큰 만료 관리: 토큰의 만료 기간을 관리하여 보안을 유지해야 합니다.
요약하면, 세션 기반 인증은 서버 측에서 사용자의 상태를 관리하고 보안을 유지하는 반면, 토큰 기반 인증은 클라이언트 측에서 상태를 관리하고 확장성과 분산 환경에서의 이점을 제공합니다. 선택은 사용하는 애플리케이션의 요구 사항과 보안 정책에 따라 달라집니다.