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
'Web Security' 카테고리의 다른 글
Session의 흐름과 Session관리의 정리 (0) | 2023.12.08 |
---|---|
Session, Cookie의 특징과 차이점 (0) | 2023.12.07 |
인증(Authentication)과 인가(Authorization) (0) | 2023.11.26 |