본문 바로가기
Research/Security

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

by RIEM 2023. 11. 1.

세션(Session) 기반 인증

세션 기반 인증은 서버가 클라이언트의 로그인 상태를 기억하는 방식이다.

 

절차는 이러하다:

  • 유저가 로그인 한다
  • 서버는 유저의 로그인 정보를 세션 저장소에 저장한다
  • 서버가 유저에게 로그인 정보에 대한 세션 id를 발급한다
  • 이후, 유저는 발급받은 세션으로 요청을 한다
  • 서버는 세션을 세션 저장소에서 조회한다
  • 조회 시 문제 없으면 그에 맞는 서비스를 하고, 그렇지 않으면 서비스를 하지 않는다

세션 기반의 단점은 서버 구조의 복잡도에 따라 세션 관리 난이도도 올라간다. 서버의 인스턴스가 여러 개일 경우 일관적으로 세션을 관리하기가 어렵다는 점이다. 이를 위해 따로 세션 전용 DB를 준비하는 방식으로 해결할 수 있다.

 

토큰(Token) 기반 인증

토큰은 서버가 제작한 문자열 데이터다. 이 데이터에는 유저의 로그인 정보, 서명 등이 있다. Token의 구조는 1) Header, 2) Payload, 3)Signature로 구성된다. 참고로 서명(signature) 데이터는 HMAC SHA 256 또는 RSA SHA 256 해싱 알고리즘으로 만든다.

 

절차는 이렇다:

  • 유저가 로그인을 하면
  • 서버가 유저에 대한 토큰을 발급한다
  • 이후 유저가 토큰과 함께 서버에 요청한다
  • 서버는 토큰의 유효성을 검사한 뒤, 그에 맞는 서비스로 응답한다

토큰의 특징은 무결성이다. 서명(signature) 덕분에 무결성을 보장한다. 무결정은 정보가 변경되거나 조작되지 않은 순수한 상태다.

 

토큰의 장점은 1)서버의 리소스를 아낀다는 점이다. 서버는 세션처럼 유저 정보를 따로 저장해서 관리할 필요가 없기 때문이다. 이로 인해 서버의 확장성도 증가한다.

'Research > Security' 카테고리의 다른 글

OAuth 2.0 개념  (1) 2023.12.09

댓글