JavaScript

인증 방식 (세션, 토큰)

흿짱 2023. 4. 4. 02:33

세션

  • 전통적인 방식으로 쿠키를 사용한다.
  • 사용자가 서버에 로그인 요청을 보내면, 서버는 세션에 저장하고 브라우저에 세션ID를 보낸다.
  • 브라우저는 세션ID를 쿠키에 저장하고, 브라우저는 서버에 요청 보낼때마다 쿠키를 함께 보낸다.
  • 서버는 쿠키에 있는 세션ID가 서버에 저정되어 있다면 응답 보내준다.

 

토큰

  • 세션 방식은 서버에서 데이터를 저장하기 때문에 동시접속자가 많으면 관리 어렵다. 이러한 문제 해결하는 것이 토큰 방식.
  • 대표적으로 JWT(JSON Web Tokens)가 있다.
  • 사용자가 로그인 요청을 보내면 서버는 JWT를 브라우저에 보낸다. JWT는 Header, Payload, Signature로 구성된다.
  • 브라우저는 JWT를 LocalStorage에 저장하고, 사용자가 요청을 보낼 때마다 Header에 JWT부착해 서버에 보낸다.
  • 서버는 JWT의 Signature를 확인해 맞다면 응답을 보낸다.

 


 

JWT방식(Json Web Token)

  • Json포맷을 이용해 사용자에 대한 속성을 저장하는 claim 기반의 web token.
  • 토큰 자체를 정보로 사용하는 Self-contained 방식으로, 정보 안전하게 전달.
  • 별도의 브라우저 저장소에 저장하지 않고, JWT 발급하고 검증하면 된다.
  • 확장성이 뛰어나다
  • Payload 정보가 제한적
  • JWT길이가 길다
  • 사용 예 : 회원 인증, 정보 전달