JWT (JSON Web Token)

박찬효·2022년 9월 22일
0
post-thumbnail
post-custom-banner

JWT이란?

JWT은 정보 수신/송신자 간에 정보를 JSON 객체로 안전하게 전송하기 위한 간결하고 Self-contained한 방법을 정의하는 개방형표준입니다. 이 정보는 디지털 서명되어 있으므로 확인 및 신뢰가 가능하고 JWT는 Secret을 사용하거나 RSA 또는 ECDSA를 사용하는 공개/개인 키 쌍을 사용하여 서명할 수 있습니다.

JSON Web Token은 언제 사용해야 하나?

  1. 권한부여

    • JSON Web Token을 사용하는 가장 일반적인 시나리오로, 사용자가 로그인하면 이후의 각 요청에서는 JWT가 포함되어 사용자가 해당 토큰으로 허용되는 패스, 서비스 및 리소스에 액세스할 수 있습니다.
  2. 정보교환

    • JSON 웹 토큰은 당사자 간에 정보를 안전하게 전송할 수 있는 좋은 방법입니다. 예를 들어 공용/개인 키쌍을 사용하여 JWT에 서명할 수 있기 때문에 발신인이 자신이 말하는 사용자임을 확인할 수 있습니다.

JSON Web Token의 구조

  1. Header
    • 헤더는 일반적으로 JWT인 토큰 유형과 HMAC SHA256또는 RSA와 같이 사용 중인 서명 알고리즘의 두부분으로 구성됩니다.
  2. Payload
    • 토큰에 담을 클레임 정보를 포함하고 있습니다. Payload 에 담는 정보의 한 '조각'을 클레임이라고 부르고 이는 name/value의 한 쌍으로 이뤄져있습니다.
  3. Signature
    • 토큰을 인코딩하거나 유효성 검증을 할 때 사용하는 고유한 암호화 코드입니다.

JSON Web Token의 장단점

👍 장점

  • URL 파라미터와 헤더로 사용

  • 수평스케일이 용이합니다

  • 디버깅 및 관리가 용이합니다.

  • 트래픽 대한 부담이 낮습니다.

  • REST 서비스로 제공 가능합니다.

  • 독립적인 JWT입니다.

👎 단점

  • 토큰을 클라이언트에 저장되어 데이터베이스에서 사용자 정보를 조작하더라도 토큰에 직접 적용할 수 없습니다.

  • 더 많은 필드가 추가되면 토큰이 커질 수 있습니다.

  • 비상태 애플리케이션에서 토큰은 거의 모든 요청에 대해 전송되므로 데이터 트래픽 크기에 영향을 미칠 수 있습니다.

profile
개발자가 되기 위한 1인
post-custom-banner

0개의 댓글