열심히 살아나갈 사람
Published 2023. 11. 26. 20:56
JWT(JSON Web Token) Web Security
728x90

JWT (JSON Web Token)는 웹 표준 (RFC 7519)으로서, 두 개체 사이에서 JSON 객체를 안전하게 전송하기 위해 설계된 작은 디지털 토큰입니다.

이는 정보를 안전하게 전송하는 데 사용되며, 이 정보는 디지털 서명을 통해 검증 및 신뢰성을 보장받을 수 있습니다.

 

JWT는 웹 보안과 인증인가에 있어서 매우 중요한 역할을 하므로이에 대한 깊은 이해가 필요합니다.


JWT의 구성

JWT는 세 부분으로 구성되어 있습니다: 헤더 (Header), 페이로드 (Payload), 시그니처 (Signature)

 

  • 헤더: 토큰의 타입과 해싱 알고리즘을 정의합니다.
  • 페이로드: 전송할 데이터를 담고 있습니다. 이 데이터는 클레임 (Claim)이라는 표현을 사용하며이 클레임은 세 가지 유형이 있습니다 등록된 (Registered), 공개 (Public), 비공개 (Private) 클레임
  • 시그니처: 헤더와 페이로드를 이용하여 생성한 해시입니다. 이 시그니처는 토큰이 변경되지 않았음을 확인하는 데 사용됩니다.

JWT의 작동 방식

  • 클라이언트가 서버에 로그인 요청을 보냅니다.
  • 서버는 요청을 검증하고, 성공적으로 검증되면 JWT를 생성하여 클라이언트에게 반환합니다.
  • 클라이언트는 이 JWT를 저장하고, 서버에 요청을 보낼 때마다 이 토큰을 포함하여 보냅니다.
  • 서버는 클라이언트가 보낸 JWT를 검증하고, 요청을 처리합니다.

JWT의 장점

  • HTTP 프로토콜을 사용하는 RESTful 서비스에 최적화되어 있습니다.
  • 세션을 유지하지 않아도 되므로 서버의 부하를 줄일 수 있습니다.
  • 자체 정보를 가지고 있어서, 추가적인 DB 조회 없이 필요한 정보를 얻을 수 있습니다.

JWT의 단점

  • 한번 발급되면 만료시간이 될 때까지는 계속 사용될 수 있으므로, 토큰을 훔쳐갔을 경우 보안에 취약합니다.
  • 페이로드에 담는 정보가 많아지면 토큰의 크기가 커집니다.

728x90
profile

열심히 살아나갈 사람

@쿼리_

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!