두 방식의 차이는 인증 확인 증거를 어디에 저장하냐에 있다. 세션 기반 인증은 DB 서버에, 토큰 기반 인증은 클라이언트 측에 저장한다.
사용자가 인증되면 서버 측에서 해당 사용자를 식별하는 정보를 생성하고 저장합니다(세션).
세션 식별자는 일반적으로 쿠키에 저장되며, 사용자가 로그인하면 서버에서 세션 ID를 생성하고 이를 클라이언트(브라우저)에게 전달합니다.
세션 ID는 서버에 저장된 사용자 정보와 연결되어 있으며, 사용자 요청 시마다 세션 ID를 사용하여 인증 상태를 확인합니다.
서버 측에서 세션 정보를 저장하므로, 보안에 좀 더 강력합니다. 하지만 확장성이 떨어질 수 있습니다.
사용자가 인증되면 서버는 사용자에게 토큰을 제공합니다.
이 토큰은 클라이언트(일반적으로는 브라우저)에 저장되며, 이후의 모든 요청에서 해당 토큰을 전송하여 인증합니다.
토큰은 사용자의 인증 정보를 포함하고 있으며, 서버에서 검증할 수 있는 서명이 포함되어 있습니다.
서버는 토큰을 검증하여 사용자를 인증합니다. 서버 측에서 사용자의 상태를 저장하지 않으므로 확장성이 더 높습니다.
세션 기반 인증은 서버 측에서 사용자 상태를 유지하므로 보안성은 높지만, 서버 부하가 높고 확장성이 제한될 수 있습니다. 반면에, 토큰 기반 인증은 서버에 상태를 저장하지 않으므로 서버 확장성이 좋지만, 토큰을 안전하게 관리해야 하며, 보안을 위한 추가적인 조치가 필요할 수 있습니다. 선택은 애플리케이션의 요구 사항과 보안 요구 사항에 따라 달라질 수 있습니다.