JWT(JSON Web Token)에서 클레임(Claim)은 토큰 안에 포함된 정보 조각을 의미합니다. 클레임은 사용자에 대한 속성이나 토큰에 대한 메타데이터를 담고 있으며, 세 가지 유형으로 구분됩니다: 등록된 클레임(Registered Claims), 공개 클레임(Public Claims), 비공개 클레임(Private Claims).
비유로 설명
클레임을 비유로 설명하자면, JWT를 신분증(ID 카드)에 비유할 수 있습니다. 신분증에는 소지자의 정보를 담고 있는 여러 필드가 있습니다.
등록된 클레임 (Registered Claims)
등록된 클레임은 신분증의 표준 필드와 같습니다. 예를 들어, 신분증 번호, 발행일, 만료일 등이 있습니다. JWT에서는 이러한 필드로 iss(발행자), sub(주체), exp(만료 시간) 등이 있습니다. 이는 표준화된 정보로서, 여러 시스템 간에 통용될 수 있습니다.
공개 클레임 (Public Claims)
공개 클레임은 신분증의 추가 정보 필드와 같습니다. 예를 들어, 긴급 연락처나 혈액형 같은 정보입니다. JWT에서는 이러한 필드를 커스터마이즈하여 사용할 수 있습니다. 하지만 충돌 방지를 위해 URI 형식으로 네임스페이스를 지정하여 사용해야 합니다.
비공개 클레임 (Private Claims)
비공개 클레임은 신분증의 사용자 정의 필드와 같습니다. 예를 들어, 특정 회사에서만 사용하는 사원 번호나 부서 코드 등이 있습니다. JWT에서는 발행자와 수신자 간에만 이해되는 정보를 담기 위해 사용됩니다. 예를 들어, userId나 roles 같은 정보가 될 수 있습니다.
JWT 클레임의 예
JWT는 크게 세 부분으로 구성됩니다: 헤더(Header), 페이로드(Payload), 서명(Signature). 클레임은 이 중 페이로드에 포함됩니다.
이 JWT는 John Doe가 user123라는 사용자 ID를 가진 관리자임을 나타내며, example.com에서 발행되었고 2021년 1월 1일 이후로 만료됩니다.
결론
클레임은 JWT의 중요한 구성 요소로, 토큰에 담긴 정보 조각들을 나타냅니다. 신분증의 여러 필드처럼, 클레임은 사용자 및 토큰에 대한 다양한 정보를 포함하며, 이를 통해 시스템 간의 인증 및 권한 부여를 효율적으로 수행할 수 있습니다.
'네이버 클라우드 캠프' 카테고리의 다른 글
Spring Data REST (0) | 2024.06.03 |
---|---|
JWT (0) | 2024.06.01 |
React_{children}, import vs const-require (0) | 2024.05.31 |
@ElementCollection_임베디드 테이블 (0) | 2024.05.31 |
CORS, CSRF (0) | 2024.05.31 |