JWKS 서명 검증
JWKS Verifier
JWKS 주소에서 키를 가져와 kid로 고른 뒤 토큰 서명과 표준 클레임을 검증합니다.
발급자가 공개한 JWKS로 토큰을 검증합니다. URL로 가져오거나 붙여넣으면 됩니다. `kid`로 키를 고르고 서명을 확인한 뒤 `exp`와 `nbf`를 검사하고, 적어 두면 `iss`와 `aud`까지 검사합니다. 토큰은 보내지 않습니다. 가져오는 것은 JWKS URL뿐입니다.
토큰은 이 탭을 떠나지 않습니다.
서명 검증은 브라우저의 WebCrypto가 하고, 이 페이지에는 서버 쪽이 없습니다. 유일한 네트워크 요청은 입력한 JWKS URL로의 GET 하나이며 그 요청에는 URL 외에 아무것도 — 토큰도 — 실리지 않습니다.
토큰
Bearer 접두사는 알아서 뗍니다.
공개키 (JWKS)
브라우저가 직접 GET 합니다. 토큰은 보내지 않습니다.
발급자의 /.well-known/openid-configuration 안 jwks_uri가 이 주소입니다.
기대하는 값 (선택)
비워 두면 그 클레임은 검사하지 않습니다. exp·nbf는 항상 검사합니다.
검증하는 것
- · RS256·RS384·RS512, PS256·PS384·PS512, ES256·ES384·ES512, EdDSA(Ed25519)를 WebCrypto로 검증합니다 (RFC 7518 §3, RFC 8037). HS*는 공유 비밀키라 JWKS로는 검증할 수 없고 JWT 디코더에서 비밀키로 검사합니다. ES256K와 Ed448은 브라우저 WebCrypto에 없습니다.
- · 키는 토큰 헤더의
kid로 고릅니다 (RFC 7515 §4.1.4). 키 회전 중이면 JWKS에 키가 여럿이므로, kid가 맞지 않으면 그렇게 말해 줍니다. - ·
exp·nbf는 허용 오차를 두고 검사하고,iss·aud는 기대값을 적었을 때만 검사합니다 (RFC 7519 §4.1).alg: none은 무조건 거부합니다.
사용 방법
토큰을 붙여넣습니다
`alg`와 `kid`, 발급자를 바로 읽어 보여 줍니다. 어느 JWKS가 필요한지 그것으로 알 수 있습니다.
키 집합을 가져오거나 붙여넣습니다
발급자의 `/.well-known/openid-configuration`에 `jwks_uri`가 적혀 있습니다. Google·Microsoft·Apple은 버튼으로 있고, 나머지는 직접 입력하거나 붙여넣으면 됩니다.
기대하는 값을 채웁니다
`iss`와 `aud`를 비워 두면 아예 검사하지 않습니다. 실제 시스템에서 다른 대상용 토큰이 통과하는 경로가 그것입니다. 시계 오차 허용은 서버 사이에 1분쯤 차이가 나는 경우를 위한 것입니다.
판정과 클레임 표를 읽습니다
위쪽 배너가 받아들일지 말지를 말하고, 아래 표가 어느 검사에서 그 답이 나왔는지와 어떤 키가 선택됐는지를 말합니다.
자주 묻는 질문
CORS 오류로 가져오지 못했습니다.
JWKS 엔드포인트가 CORS 헤더를 보내야 브라우저가 읽을 수 있습니다. Google·Microsoft·Apple은 보내고, 직접 운영하는 발급자 중에는 안 보내는 곳이 많습니다. curl로 받아서 JSON을 붙여넣으세요. 어느 쪽이든 검증은 똑같습니다.
kid에 맞는 키가 없다고 나옵니다.
대개 키 회전 때문입니다. 발급자가 키를 바꾸기 전에 서명된 토큰인데 JWKS에는 새 키만 남아 있는 경우죠. 가져온 JWKS와 다른 발급자의 토큰일 수도 있습니다.
`alg: none`은 왜 항상 거절되나요?
그것을 받아들이는 것이 JWT의 고전적인 취약점이기 때문입니다. 공격자가 헤더를 고쳐 서명을 없애면, 헤더를 믿는 라이브러리가 그 토큰을 통과시킵니다. 검증 경로에서 그것이 정당하게 쓰일 자리는 없습니다.
HS256 토큰도 확인되나요?
여기서는 안 됩니다. HS*는 공유 비밀이고 JWKS는 공개키를 공개하는 것입니다. 비밀을 받는 JWT 디코더를 쓰세요. HMAC 키를 JWKS에 올리는 발급자는 토큰을 발행할 능력을 공개하는 셈입니다.
이 도구로 이어지는 것
JWT 디코더
JWT Decoder
헤더와 페이로드를 해독하고 만료 시각을 현지 시간으로 보여 주며 입력한 키로 서명을 검증합니다.
공개키 쌍 생성
Key Pair Generator
RSA·ECDSA·Ed25519 키 쌍을 만들고 PEM·JWK·OpenSSH 형식으로 내보냅니다.
JSON 정렬·검사
JSON Formatter & Validator
JSON을 보기 좋게 정렬하거나 압축하고, 문법 오류가 난 줄과 열을 정확히 짚어 줍니다.
YAML 정렬·검사
YAML Formatter & Validator
YAML 들여쓰기를 통일하고 문법을 검사하며, 파서를 깨뜨리는 탭·앵커 실수를 표시합니다.
다음 단계
이 도구의 결과를 그대로 받을 수 있는 도구들입니다.
인증서 디코더
Certificate Decoder
PEM·DER 인증서와 CSR을 해석해 주체·SAN·유효기간·키 용도와 체인 정보를 보여 줍니다.
JWT 디코더
JWT Decoder
헤더와 페이로드를 해독하고 만료 시각을 현지 시간으로 보여 주며 입력한 키로 서명을 검증합니다.
공개키 쌍 생성
Key Pair Generator
RSA·ECDSA·Ed25519 키 쌍을 만들고 PEM·JWK·OpenSSH 형식으로 내보냅니다.
JSON CSV 변환
JSON ⇄ CSV
중첩 JSON을 점 표기 열 이름으로 펼치거나, 표에서 객체를 다시 만듭니다.
JSON 비교
JSON Diff
키 순서를 무시하고 두 JSON을 구조로 비교해 추가·삭제·변경된 경로를 알려 줍니다.
JSON 정렬·검사
JSON Formatter & Validator
JSON을 보기 좋게 정렬하거나 압축하고, 문법 오류가 난 줄과 열을 정확히 짚어 줍니다.