한국어

개발자 도구 · JWT 디코더

401 디버깅: API를 비난하기 전에 디코딩된 JWT에서 확인할 사항

· 그것이 중요한 이유

jwt 디버깅 인증

구조화된 디버깅 체크리스트를 통과하는 거부된 JWT
원본 ToolAcre 벡터 일러스트레이션

대부분의 토큰 거부는 페이로드를 읽으면 발견할 수 있는 몇 가지 청구 문제로 인해 발생합니다. 이 게시물은 만료부터 청중, 복사-붙여 넣기 오류까지 체크리스트를 제공하여 확인합니다.

어제는 작동했습니다. 코드 변경 없이 401가 나타납니다.

클라이언트 코드 변경 없이 나타나는 401는 토큰 수명, 발급자 정책, 키 순환, 대상 선택 또는 손상된 복사본으로 인해 발생할 수 있습니다. API가 다운되었다고 가정하기보다는 증거부터 시작하십시오. 자격 증명을 조작하기 전에 응답 세부 정보와 상관 식별자를 보존하세요.

만료되었거나 합성되었거나 적절하게 제어된 사본만 디코딩하십시오. ToolAcre는 구조적 및 청구 단서를 노출할 수 있지만 키, 발급자 정책 또는 API 로그가 없기 때문에 모든 서버 거부를 식별할 수는 없습니다. 체크리스트는 질문의 범위를 좁힙니다. 리소스 서버의 판정을 대체하지 않습니다.

오류부터 복사 — 'Bearer' 접두사, 후행 줄 바꿈 및 잘린 토큰

복사된 값을 먼저 확인하세요. ToolAcre는 주변 공백을 자르고 일반적인 인증 헤더 붙여넣기를 처리하는 대소문자를 구분하지 않는 하나의 `Bearer ` 접두사를 제거합니다. 그런 다음 정확히 3개의 점으로 구분된 세그먼트가 필요합니다. 잘못된 계산은 청구 분석이 시작되기 전에 잘림, 잘못된 토큰 형식 또는 추가 구두점을 가리킵니다.

빈 헤더 또는 페이로드는 구체적으로 실패합니다. 잘못된 base64url, 잘못된 UTF-8 및 잘못된 JSON에는 별도의 오류가 있습니다. 이러한 구별은 전송으로 인해 토큰이 손상되었는지 여부를 결정하는 데 도움이 됩니다. 검사를 차단하지 않고 서명의 형식이 잘못되었을 수 있지만 해당 경고는 서버 측 확인이 필요한 확인 실패 가능성으로 남아 있습니다.

exp 및 nbf: 디스플레이를 유효성 판정으로 전환하지 않고 초 기반 값을 검사합니다.

다음으로 숫자 `exp` 및 `nbf` 값을 검사합니다. ToolAcre는 초에 1,000를 곱하고 UTC를 표시하며 브라우저 시계를 기준으로 이전 만료 또는 이전 만료 날짜에 레이블을 지정합니다. 13자리 값은 초가 예상되는 위치에 밀리초가 기록되었음을 나타낼 수 있습니다.

이러한 라벨을 시행으로 승격하지 마세요. 위조된 토큰은 향후 만료를 주장할 수 있으며 서버는 다른 시계 또는 여유 정책을 사용할 수 있습니다. 디스플레이는 신뢰할 수 있는 로그와 비교할 가치가 있는 산술을 식별합니다. 클레임이 수락에 영향을 미치려면 먼저 암호화 확인이 성공해야 합니다.

aud 및 iss — 이 API에 대한 토큰이며 이 API가 신뢰하는 발급자가 제공합니까?

`aud`은 API 정책에 따라 의도된 수신자를 식별해야 하며, `iss`은 신뢰할 수 있는 발급자 관계와 일치해야 합니다. ToolAcre는 두 값을 모두 디코딩된 값으로 나열하고 등록된 의미를 설명합니다. 이를 API 구성과 비교하거나 발급자 문자열을 키 세트에 바인딩하지 않습니다.

그럴듯한 발급자 URL과 대상자 이름이 조작될 수 있습니다. 서명 검증 경계를 보존한 후에만 정확한 디코딩된 값을 서버의 구성된 기대치와 비교하십시오. 여러 서비스가 ID 인프라를 공유하는 경우 한 서비스의 유효한 토큰이 다른 서비스에서 사용되는 것을 방지하기 위해 대상 확인이 특히 중요합니다.

토큰 유형은 헤더 및 클레임에서 제안될 수 있지만 디코딩은 해당 분류를 인증할 수 없습니다.

ID 토큰과 액세스 토큰은 모두 세 부분으로 구성된 JWT처럼 보일 수 있습니다. 헤더 `typ`, 대상, 범위 및 프로필별 클레임은 귀하가 보유하고 있는 항목을 제안할 수 있습니다. ToolAcre는 예기치 않은 문자열 `typ`에 대해 경고하지만 OpenID Connect 또는 OAuth 토큰 분류를 구현하지 않습니다.

발급자 문서와 클라이언트 흐름을 사용하여 예상되는 토큰 종류를 설정합니다. 서명이 ID 공급자에 대해 유효한 경우에도 ID 토큰을 API로 보내는 작업이 실패할 수 있습니다. 디코딩은 진단을 지원합니다. 유형 라벨을 인증하거나 API 권한을 부여할 수 없습니다.

키 교체 후 키 — 서버에 더 이상 없는 키를 참조하는 유효한 토큰

키 순환 후 헤더 `kid`은 서버의 현재 신뢰할 수 있는 세트에 없는 키를 참조할 수 있습니다. 식별자를 읽은 다음 검증기에서 캐시 및 키 세트 로그를 검사합니다. 빠른 해결 방법으로 헤더에서 제공한 URL을 가져오거나 포함된 키 자료를 허용하지 마세요.

검증자가 허용된 키를 찾을 수 없으면 올바르게 서명된 토큰이 여전히 실패할 수 있지만 공격자는 검증되지 않은 헤더에 `kid`을 쓸 수 있습니다. 값은 신뢰할 수 있는 발급자 구성으로 제한되는 조회 힌트이지 특정 키를 믿어야 한다는 증거는 아닙니다.

실제 예 — ToolAcre JWT 디코더의 체크리스트를 통해 거부된 토큰 실행

작업 분류를 위해 제어된 거부 토큰을 가져와 세 개의 세그먼트를 확인하고 오류를 검사한 다음 `exp`, `nbf`, `aud`, `iss`, `typ` 및 `kid`를 편집하지 않고 기록합니다. 각 필드를 요청의 대상 API 및 검증자의 신뢰할 수 있는 구성과 비교하세요. 실제 오류 범주에 대해 서버 로그를 열어 두십시오.

표시되는 모든 값이 예상한 것처럼 보이더라도 API가 잘못되었다고 결론을 내리지 마십시오. 서명 손상, 잘못된 키 자료, 취소된 상태 또는 표시되지 않은 정책은 여전히 ​​401을 설명할 수 있습니다. ToolAcre의 `signatureVerified`은 JSON가 얼마나 깔끔하게 나타나는지에 관계없이 거짓으로 유지됩니다.

이것이 다루지 않는 것과 시사점 — 디코더는 서명이 유효한지 여부를 알 수 없습니다. 체크리스트를 통해 청구 문제를 발견하고 서명 실패 시 서버 로그가 필요함

디코더는 서명이 유효한지 여부를 알려줄 수 없습니다. 청구 체크리스트는 키 없이도 눈에 보이는 복사 및 페이로드 문제를 찾아냅니다. 서명 실패 및 권위 있는 정책 결정에는 서버 증거가 필요합니다. 디코드를 여러 가지 진단 관찰 중 하나로 취급합니다.

신뢰할 수 있는 가장 빠른 경로가 순서대로 지정됩니다. 즉, 응답 컨텍스트를 보존하고, 토큰 형태를 검사하고, 시간 단위를 비교한 다음, 발급자, 대상, 유형 및 키 식별자를 신뢰할 수 있는 구성과 비교합니다. 실제 검증자가 암호화 및 정책을 확인할 때까지 신뢰 부족을 중지하십시오.