한국어

개발자 도구 · JWT 디코더

등록된 7개의 JWT 클레임: iss, sub, aud, exp, nbf, iat 및 jti

· 배경

jwt 데이터 형식 인증

페이로드 객체 내부에 정렬된 7개의 등록된 JWT 클레임 라벨
원본 ToolAcre 벡터 일러스트레이션

RFC 7519는 정의된 의미와 유형을 가진 7개의 클레임 이름을 예약합니다. 이 게시물에서는 각 항목, 그 뒤에 있는 StringOrURI 및 NumericDate 유형, 등록된 클레임, 공개 및 비공개 클레임이 공존하는 방법에 대해 설명합니다.

어떤 소유권 주장 이름을 사용해야 합니까? — 레지스트리가 답변하는 설계 질문

클레임 이름 선택은 부분적으로 상호 운용성 결정입니다. 등록된 이름을 재사용하면 독자와 라이브러리에 확립된 의미가 부여되는 반면, 애플리케이션별 이름에는 로컬 문서가 필요합니다. ToolAcre는 설명 테이블에서 7개의 핵심 이름을 인식하고 의미를 할당하지 않고 다른 주장을 표시합니다.

친숙한 이름은 자동으로 신뢰할 수 없습니다. 디코더는 토큰에 포함된 모든 개체를 읽고 서명을 확인하지 않습니다. 등록된 어휘는 인간이 데이터를 분류하는 데 도움이 됩니다. 신뢰할 수 있는 검증자만이 발급자가 보호된 값을 제공했음을 확인할 수 있습니다.

iss 및 sub는 문자열로 표시됩니다. 이 구현은 StringOrURI 구문을 적용하지 않습니다.

`iss`는 토큰을 발행한 사람이 누구인지 식별하고, `sub`은 토큰이 누구 또는 무엇에 관한 것인지 식별합니다. ToolAcre는 두 가지를 모두 설명하고 해당 값을 표시하지만 해당 구현에서는 StringOrURI 문법의 유효성을 검사하거나 두 필드 중 하나를 서비스 구성과 비교하지 않습니다.

검증자는 예상 발급자를 신뢰할 수 있는 키 자료에 바인딩하고 해당 발급자의 네임스페이스 아래 주제를 해석해야 합니다. 알려진 발급자 문자열을 조작된 페이로드에 복사하면 원본을 설정하지 않고도 디코더가 설득력 있게 보입니다. 암호화 확인 후에만 이 필드를 사용하십시오.

aud — 의도된 수신자(문자열 또는 배열)

`aud`는 의도된 수신자를 설명하며 적용 가능한 토큰 규칙에 따라 하나의 값 또는 목록으로 표시될 수 있습니다. ToolAcre의 일반 클레임 테이블은 배열을 JSON 텍스트로 유지하지만 현재 서비스가 표시되는지 여부는 결정하지 않습니다.

대상은 상황에 따라 다릅니다. 동일한 인증 토큰이 한 API에는 적합할 수도 있고 다른 API에는 적합하지 않을 수도 있습니다. 리소스 서버는 신뢰할 수 있는 구성에서 예상 식별자가 필요하며 토큰이 허용되어야 하는 위치를 정의하도록 하는 대신 불일치를 거부해야 합니다.

exp, nbf 및 iat — 시간에 따라 토큰을 바인딩하는 세 가지 NumericDate 클레임

`exp`, `nbf` 및 `iat`는 NumericDate 클레임입니다. ToolAcre는 에포크 이후 유한한 숫자를 초로 처리하고 날짜 표시에 대해 1,000을 곱하고 브라우저 시계를 기준으로 만료 여부를 레이블로 지정합니다. 여유를 정의하거나 서버 승인을 시행하지 않습니다.

만료는 요청된 끝 경계를 표시하지만 토큰이 유효했다는 증거는 아닙니다. Not before는 청구된 시작 경계를 표시하고, issue-at는 청구된 생성 시간을 기록합니다. 각각은 페이로드에서 위조될 수 있으므로 시간 산술은 신뢰할 수 있는 흐름의 서명 확인을 따라야 합니다.

jti — 재생 감지 및 차단 목록을 위한 고유 식별자

`jti`은 토큰 식별자입니다. 시스템은 재생 추적 또는 해지 상태에 대해 적절하게 생성된 인증된 식별자를 사용할 수 있지만 클레임만으로는 두 속성을 모두 제공하지 않습니다. ToolAcre는 이를 재생 감지를 위한 토큰 ID로 설명하고 정확한 값을 표시합니다.

고유성, 저장 및 조회 동작은 발급자 및 검증자 아키텍처에 속합니다. 디코더는 다른 토큰이 식별자를 재사용했는지 또는 거부 목록에 해당 식별자가 포함되어 있는지 확인할 수 없습니다. 주변의 신뢰할 수 있는 시스템이 증거를 제공할 때까지 이를 후보 상관 값으로 처리합니다.

ToolAcre 디스플레이에 등록된 설명 및 애플리케이션별 클레임

구현에서는 설명 텍스트를 통해서만 등록된 이름을 구별합니다. 모든 페이로드 속성은 여전히 ​​`listClaims`에 의해 반환됩니다. 알 수 없는 이름은 null 설명을 받고 UI는 해당 이름에 애플리케이션별 라벨을 붙입니다. 공개 레지스트리를 참조하거나 개인 이름 충돌을 방지하지 않습니다.

해당 경계는 출처가 증명한 것 이상을 주장하는 것을 방지합니다. 팀은 비공개 주장을 문서화하고 상호 운용성이 중요한 경우 충돌 방지 이름을 선택해야 합니다. 디코더에 설명이 없다는 것은 "이 로컬 7개 이름 테이블에 없음"을 의미하거나 "유효하지 않음" 또는 "무시해도 안전함"을 의미하지 않습니다.

실제 사례 — 현실적인 페이로드를 읽고 각 주장을 분류

`{"iss":"https://issuer.example","sub":"user-7","aud":["orders"],"exp":1717246800,"nbf":1717243100,"iat":1717243200,"jti":"demo-9","tenant":"north"}`을(를) 고려하세요. ToolAcre는 7개의 등록된 필드와 `tenant` 애플리케이션별 레이블을 설명하는 동시에 3개의 숫자 시간 형식을 지정합니다.

이 분류는 페이로드 설계를 검토하는 데 도움이 됩니다. URL, 제목, 대상, 날짜, 식별자 또는 임차인을 인증하지 않습니다. 위조된 토큰은 개체를 정확하게 재현할 수 있습니다. 확인된 청구만 승인 논리에 입력한 다음 소비 서비스의 예상 값을 적용합니다.

요점: 적합할 경우 등록된 이름을 사용하십시오. ToolAcre JWT 디코더는 페이로드를 표시하므로 실제 발급자가 설정한 클레임을 확인할 수 있습니다.

정의된 의미가 적합할 경우 등록된 이름을 사용하십시오. 인식 가능한 어휘는 불필요한 번역을 줄여주기 때문입니다. 비공개 필드를 문서화하고 최소한으로 유지하세요. 다운스트림 코드가 이미 해당 키를 구문 분석했다는 이유만으로 `sub`, `aud` 또는 다른 로컬 의미를 갖는 시간 주장을 오버로드하지 마세요.

ToolAcre는 안전한 토큰이 전달하는 이름과 숫자 주장이 어떻게 렌더링되는지 보여줄 수 있습니다. 어떤 값도 인증할 수 없습니다. 디코딩의 유용한 결과는 검토용 목록입니다. 검증과 정책의 유용한 결과는 결정이며, 이는 별개로 유지됩니다.