토큰 기반 인증

이지호·2021년 11월 18일

서버(세션) 기반인증

HTTP프로토콜의 특징으로는 대표적으로 비연결성(Connectionless), 무상태(Stateless)가 있다.

비연결성(Connectionless)는 클라이언트와 서버가 연결을 생성한 후 클라이언트 요청에 대해 서버가 응답을 하면 연결이 종료되는 특징이다.

무상태(Stateless)는 서버가 클라이언트 이전 상태를 보존지 않는 특징을 말한다.

따라서 HTTP프로토콜로 로그인 시도 후 접속하면 로그인 상태가 유지가 되지 않는다.
세션과 쿠키를 사용하여 인증을 수행하는 방식을 이용한다.

단점으로는 쿠키가 탈취 당할 위험이 있고, 서버에서 세션을 가지고 있기 때문에 사용자 수가 증가하면 서버의 부담이 증가한다.

토큰 기반인증

서버가 발급한 토큰을 이용하여 인증을 수행하는 방식이다.
서버(세션)기반 인증은 클라이언트 상태를 유지하지만, 토큰기반 인증은 무상태(Stateless)특징을 이용하므로 전달받은 토큰만 검증하면 되기 때문에 서버에 부담을 크게 줄일 수 있고 확장성이 높아진다.

토큰 기반 인증 시스템의 작동원리

  1. 사용자가 로그인을 시도한다.
  2. 로그인 과정을 통해 클라이언트로 부터 요청을 받아 계정정보를 검증한다.
  3. 검증이 완료되고, 유효하다면 정상적으로 발급된 토큰임을 증명하는 signature를 포함한 토큰을 발급한다.
  4. 클라이언트는 응답으로 받은 토큰을 가지고, 서버에 요청할 때마다 토큰을 함께 포함하여 요청한다.
  5. 서버는 토큰을 검증하고 요청을 처리하고 응답한다.

0개의 댓글