[TIL] 세션 기반 인증과 토큰 기반 인증의 차이

sooyoung choi·2024년 2월 5일
0

세션 기반 인증과 토큰 기반 인증은 사용자 인증을 처리하는 두 가지 주요 방법입니다. 각각의 방법은 사용자의 신원을 확인하고, 그 신원에 기반하여 사용자가 시스템의 자원에 접근할 수 있도록 허용하는 메커니즘을 제공합니다. 그러나 이 두 방법은 상태 관리와 클라이언트-서버 간의 인증 정보 교환 방식에서 근본적인 차이를 가집니다.

세션 기반 인증
세션 기반 인증에서는 서버가 사용자의 로그인 정보를 받아 인증 과정을 수행한 후, 사용자에 대한 세션을 생성하고 이를 서버에 저장합니다. 사용자의 브라우저는 세션 식별자(보통 쿠키에 저장됨)를 받게 되며, 이후의 모든 요청에 이 식별자를 포함시켜 서버에 보냅니다. 서버는 이 식별자를 사용하여 저장된 세션을 조회하고, 해당 세션에 연결된 사용자의 인증 상태와 권한을 확인합니다.

장점: 상태가 서버에 의해 관리되므로, 서버는 사용자의 로그인 상태를 정확하게 추적할 수 있습니다. 또한, 세션 쿠키는 비교적 관리하기 쉽습니다.
단점: 모든 사용자 정보가 서버 메모리에 저장되기 때문에, 대규모 시스템에서는 서버의 자원을 많이 소모할 수 있습니다. 또한, 서버 환경이 확장될 때 세션의 일관성을 유지하기 위한 추가적인 인프라가 필요할 수 있습니다.
토큰 기반 인증
토큰 기반 인증에서는 서버가 사용자의 로그인 정보를 확인한 후, 서명된 토큰(예: JWT - JSON Web Tokens)을 생성하여 사용자에게 반환합니다. 이 토큰은 사용자의 인증 정보와 권한을 암호화한 정보를 포함하고 있으며, 사용자는 이후의 모든 요청에 이 토큰을 포함시켜 서버에 전송합니다. 서버는 토큰의 유효성을 검증하고, 토큰에 포함된 정보를 사용하여 사용자의 권한을 확인합니다.

장점: 세션 상태를 서버에 저장할 필요가 없으므로, 서버 리소스의 부담이 줄어들고, 확장성이 향상됩니다. 또한, 토큰은 다양한 플랫폼과 서비스 간의 인증에 용이하게 사용될 수 있습니다.
단점: 토큰이 탈취되면, 탈취자는 토큰의 유효 기간 동안 사용자의 권한을 가질 수 있습니다. 따라서, 토큰의 보안과 관리에 주의가 필요합니다.
결론
세션 기반 인증은 전통적인 방법으로, 서버 측에서 사용자의 상태를 관리하는 데 초점을 맞춥니다. 반면, 토큰 기반 인증은 상태를 클라이언트 측에서 관리하며, 서버의 확장성과 서비스 간의 연동성에 유리한 방식입니다. 각 방식은 특정한 시나리오와 요구 사항에 따라 선택

0개의 댓글