[기본 개념] Token vs Session

찐찐·2022년 4월 1일
0

Session based authentication

  • 사용자가 로그인하면 session data를 sever memory에 저장한다.
  • sessionId는 사용자 브라우저의 cookie에 저장한다.
  • 이후 sessionId를 통해 server와 client가 정보를 주고 받는다.

Token based authentication

  • 사용자 상태가 client에 저장된다.
  • RESTful API를 구현하는데 주로 선호 되는 인증 방식
  • JWT는 사용자 정보가 암호화 돼서 client에 저장된다.
  • client는 요청의 header에 JWT를 실어서 보내고, server는 유효성을 검증하고 response를 넘겨준다.
    headers:{
    	"Authorization": "Bearer ${JWT_TOKEN}"
    }
  • 사용자가 token을 조작할 수 없다. 이미 JWT에서 처리를 다 해놨음. → 서버의 허용 없이 token을 바꿔서 사용할 수 없다!
  • 요즘에는 핸드폰 기기의 인증도 함께하기 위해서 대부분이 JWT를 사용한다.

확장성 비교

  • session: sever memory에 저장하기 때문에 사용자가 많아지면 issue 발생.
  • token: client side에 저장하기 때문에 사용자가 많아져도 문제가 없다.

기기 여러대

  • session: cookie는 단일 혹은 하위 도메인에서 사용됨. 따라서 다른 API를 같이 사용할 경우 문제가 된다.
  • token: 매 요청마다 header에 넣어주기 때문에 아무런 문제가 없다.

참고

profile
백엔드 개발자 지망생

0개의 댓글