Session vs Token

베스트오버 2023. 4. 21.

세션 기반 인증

  1. 사용자가 로그인 페이지에 접속하여 ID와 비밀번호를 입력합니다.
  2. 서버는 입력된 정보를 검증하고, 인증되면 해당 사용자에 대한 정보를 가지고 세션ID를 발급합니다. 세션ID는 서버에 저장됩니다.
  3. 세션ID는 사용자의 브라우저 쿠키에 저장되어, 사용자는 다른 요청을 보낼 때마다 세션ID를 함께 보냅니다.
  4. 서버는 세션ID를 받아 해당 사용자의 정보를 가져와 요청에 대한 응답을 보냅니다.
  5. 사용자가 로그아웃하면 세션ID는 삭제됩니다.

장점

  • 서버에서 세션에 대한 정보를 저장할 수 있어, 로그인된 사용자에 대한 추가적인 정보를 저장하거나 관리하기에 용이합니다.

단점

  • 서버에서 세션 정보를 유지하기 위해 자원이 많이 필요합니다.
  • 사용자가 로그아웃하지 않은 경우에는 서버의 부하를 일으킬 수 있습니다.

 

 

토큰 기반 인증

  1. 사용자가 로그인 페이지에 접속하여 ID와 비밀번호를 입력합니다.
  2. 서버는 입력된 정보를 검증하고, 인증되면 해당 사용자에 대한 정보를 가지고 토큰을 발급합니다. 토큰은 서버에 저장되지 않고, 사용자의 브라우저 쿠키에 저장됩니다.
  3. 사용자는 다른 요청을 보낼 때마다 토큰을 함께 보냅니다.
  4. 서버는 토큰을 받아 해당 사용자의 정보를 가져와 요청에 대한 응답을 보냅니다.
  5. 사용자가 로그아웃하면 토큰은 삭제됩니다.

장점

  • 세션 방식과 달리 서버에서 세션 정보를 유지하기 위한 자원이 필요하지 않아, 서버 부하를 줄일 수 있습니다.
  • 토큰은 유효기간이 있으며, 만료되면 재발급을 받아야 하므로 보안성이 높습니다.

단점

  • 토큰을 저장하는 쿠키가 탈취될 경우, 해당 사용자의 정보에 대한 접근이 가능해집니다.

 

  세션 방식 로그인 토큰 방식 로그인
동작 방식 서버 측에서 세션 정보를 저장하고 이를 기반으로 인증 클라이언트 측에서 액세스 토큰을 저장하고 이를 기반으로 인증
자원 사용량 서버 측에서 세션 정보를 관리해야함 클라이언트 측에서 액세스 토큰을 관리함
보안성 쿠키 혹은 세션 ID가 탈취될 경우 보안이 취약함 액세스 토큰이 탈취될 경우 보안이 취약함
적용 분야 브라우저 환경과 같이 단일 클라이언트에서 인증이 필요한 경우 모바일 애플리케이션과 같이 다양한 디바이스에서 인증이 필요한 경우

댓글