본문 바로가기
넓고 얕은 웹 지식/보안

세션 기반 자격 증명 방식과 토큰 기반 자격 증명 방식

by 황원용 2022. 11. 22.
728x90

세션 기반 자격 증명 방식 

 HTTP 프로토콜은 request 전송 후 response를 수신하게 되면 연결을 끊는 비연결성(Connectionless)의 특성과 request, response 상태를 저장하지 않는 비상태성(Stateless)의 특성을 가지고 있기 때문에 사용자 인증을 성공했을 때 인증된 사용자의 request 상태를 유지하기 위해 세션을 이용한다.

 

  • 서버 측에 인증된 사용자의 정보를 세션 형태로 저장한다.(서버 측 세션 저장소에서 관리)
  • 사용자의 고유 ID인 세션 ID는 클라이언트의 쿠키에 저장되어 증명 수단으로 사용된다.
  • 세션 ID만 클라이언트 쪽에서 사용하기 때문에 토큰 방식에 비해 상대적으로 적은 네트워크 트래픽을 사용한다.
  • 서버에서 세션 정보를 관리하므로 보안성이 유리하다.
  • 서버 확장 시 세션 불일치 문제가 발생할 가능성이 높다.
  • 세션 데이터가 많아질수록 서버의 부담이 가중될 수 있다.
  • SSR 방식의 애플리케이션에 적합하다.

토큰 기반 자격 증명 방식

  • 토큰에 포함된 사용자 정보는 서버에서 관리하지 않는다.
  • 생성된 토큰을 헤더에 포함시켜 request 전송을 할 때 인증된 사용자인지 증명하는 수단으로 사용된다.
  • 토큰 내에 인증된 사용자 정보 등을 포함하므로 세션 방식에 비해 상대적으로 많은 네트워크 트래픽을 사용한다.
  • 서버 측에서 토큰을 관리하지 않아 보안성이 불리하다.
  • 인증된 사용자 request의 상태를 유지할 필요가 없으므로 서버 확장성 면에서 유리하고 세션 불일치 문제가 발생하지 않는다.
  • 토큰에 포함되는 사용자 정보는 특성상 암호화 되지 않으므로 민감한 정보는 토큰에 포함시키지 말아야 한다.
  • 기본적으로 토큰은 만료되기전까지 무효화시킬 수 없다.
  • CSR 방식의 애플리케이션에 적합하다.
728x90

'넓고 얕은 웹 지식 > 보안' 카테고리의 다른 글

JWT(Json Web Token)  (0) 2022.11.22