2023-08-29 21:11:30

Token

토큰이란 웹에서 사용하는 특수한 목적을 가진 작은 정보의 조각을 의미합니다.

인증 및 정보 전송을 위해 주로 사용되며 암호화된 문자열로 이루어져 있어 수정이 불가능합니다. 

사용자가 로그인하면 서버에서 토큰을 발행하여 클라이언트에게 전달하고 클라이언트는 이후 요청마다 토큰을 헤더에 포함시켜 인증 정보를 전달합니다. 토큰 기반 인증은 세션 기반 인증보다 상태를 저장하지 않아 서버의 부담이 줄어들며 확장성이 높다는 장점이 있습니다.

 

JsonWebToken

jsonwebtoken는 JSON 데이터 구조를 사용하는 웹 표준(RFC 7519)으로 두 개체 사이에서 정보를 안전하게 전달 하기 위해 가장 많이 사용되는 인기있는 라이브러리입니다. JWT는 페이로드에 정보를 담아서 전달하며 페이로드는 디지털 서명이되어 있기때문에 수정이 되지 않습니다.

 

JWT 구조

JWT는 3부분으로 나뉘어 구성되있는데 구성은 다음과 같습니다.

 

  • Header : 토큰의 유형과 사용된 해시 알고리즘을 포함합니다.
  • Payload : 전송할 정보를 포함하며 클레임이라고도 합니다.
  • Signature : Header와 Payload를 합친 후 비밀키를 사용하여 서명합니다. 이 서명으로 인해 토큰의 무결성이 보장됩니다.

 

 

JWT 장점

  • Stateless : 필요한 정보를 자체적으로 가지고 있기 때문에 서버에서 별도의 상태를 유지할 필요가 없기 때문에 서버의 부하가 줄어들며 확장성이 향상됩니다.
  • 분산된 시스템에서 활용 : 서로 다른 도메인간에 인증 정보를 쉽게 공유 할 수 있어 분산된 시스템에서 특히 유용합니다.
  • 웹/앱 호환성 : 웹뿐만 아니라 앱 애플리케이션과도 쉽게 통합될 수 있습니다.
  • 보안 : 암호화와 디지털 서명을 사용하여 토콘의 무결성과 안전성을 보장합니다.
  • 효율성 : 클라이언트와 서버간에 적은 양의 데이터만 전송합니다.

JWT가 많이 사용되는 이유

  • RESTful API와 호환성 : 상태를 저장하지 않기 때문에 각 요청이 독립적으로 처리될 수 있어 RESTful의 원칙과 잘 어울리며 RESTful은 API는 웹 및 앱 애플리케이션에 많이 사용됩니다.
  • 분산 시스템에 유용 : 다양한 서비스와 플랫폼 간에 인정 정보를 쉽게 공유 할 수 있습니다.
  • 웹/앱 모두 사용 가능 : 웹 뿐만 아니라 앱에서도 인증 방식으로 많이 사용됩니다.
  • 편리한 디버깅 테스팅 : 읽기 쉬운 JSON 형식으로 이루어져 있기 때문에 개발 중에 토큰의 내용을 쉽게 확인하고 디버깅 있습니다.
728x90