JWT hata ayıklayıcı
JSON Web Token'larını tamamen çevrimdışı olarak çözün, doğrulayın ve inceleyin — web sitesi yok, ağ çağrısı yok.
JWT hata ayıklayıcı, “Bu token’a şu an bakmalıyım” aracıdır.
Araçlar → JWT’yi açın (veya Ctrl+Shift+J / Cmd+Shift+J tuşlarına basın)
ve sol panele bir token yapıştırın.
Ne görürsünüz
Testnizer token’ı iki . sınırlayıcısı üzerinde böler ve her parçayı hemen çözer:
Header
{
"alg": "RS256",
"typ": "JWT",
"kid": "2024-01-key"
}
alg ve kid vurgulanır — bunlar doğrulamanın nasıl çalışacağını kontrol eden
alanlardır.
Payload
Tüm kayıtlı iddialar tür açıklamalarıyla render edilir:
| İddia | Görüntü |
|---|---|
exp | Unix zaman damgası + ISO 8601 + kalan süre / SÜRESİ DOLDU |
iat | Unix zaman damgası + ISO 8601 |
nbf | Unix zaman damgası + ISO 8601 + gelecekteyse henüz geçerli değil uyarısı |
sub | Dize, değer olduğu gibi gösterilir |
iss | Dize, değer olduğu gibi gösterilir |
aud | Dize veya dizi, tüm değerler gösterilir |
Özel iddialar standart olanların altında, her değer için tür gösterilerek görünür.
Süresi dolmuş token’lar kırmızıyla vurgulanır. Süresinin dolmasına beş dakikadan az kalan token’lar sarı renkle vurgulanır — bir sonraki isteğiniz başarısız olmadan önce yenileme token’ı almak için yeterli uyarı süresi.
İmza
Ham imza baytları Base64URL kodlamasıyla gösterilir. Doğrulama etkinleştirilmişse (aşağıya bakın) burada bir ✓ veya ✗ rozeti ve uyumsuzluk durumunda başarısızlık nedeni görünür (algoritma uyumsuzluğu, yanlış anahtar, hatalı biçimlendirilmiş header vb.).
İmza doğrulama
Sağdaki Doğrula paneline bir anahtar yapıştırın veya seçin:
HMAC (HS256 / HS384 / HS512)
Base64 kodlu veya düz metin paylaşılan gizli anahtarı yapıştırın. Testnizer HMAC’ı hesaplar ve token’daki imzayla karşılaştırır.
RSA (RS256 / RS384 / RS512 / PS256 / PS384 / PS512)
RSA açık anahtarını şu biçimlerden birinde yapıştırın:
-----BEGIN PUBLIC KEY-----(PKCS#8 / SubjectPublicKeyInfo)-----BEGIN RSA PUBLIC KEY-----(PKCS#1)- JSON Web Key (
{"kty":"RSA","n":"...","e":"..."})
ECDSA (ES256 / ES384 / ES512)
EC açık anahtarını yapıştırın:
-----BEGIN PUBLIC KEY------ JSON Web Key (
{"kty":"EC","crv":"P-256","x":"...","y":"..."})
EdDSA (Ed25519)
Ed25519 açık anahtarını PEM veya JWK biçiminde yapıştırın.
JWKS uç noktası
Token’ın kid header’ı mevcutsa ve anahtarı yayıncının JWKS uç noktasından
almak istiyorsanız, Ayarlar → JWT bölümünde JWKS getirmeye izin ver
seçeneğini etkinleştirin (varsayılan olarak kapalı). Açıkken bir JWKS URL’si
yapıştırabilirsiniz; Testnizer şunları yapar:
- HTTPS üzerinden JWKS’yi getirir
- Token header’ındaki
kidile eşleştirir - Eşleşen anahtarla imzayı doğrular
Bu, JWT hata ayıklayıcısının yapabileceği tek ağ çağrısıdır ve yalnızca açıkça açtığınızda gerçekleşir. Ayar küresel değil, proje başınadır.
Neden jwt.io değil?
jwt.io kullanışlıdır, ancak token’ınızı ayrıştırıp görüntülemek için uzak bir servise gönderir. Üretim auth token’ı için bu şu anlama gelir:
- Kullanıcı ID’niz, rolleriniz ve yetkileriniz Postman’in (veya jwt.io’nun) günlüklerinde yer alır
subiddiası genellikle bir hesaba ters eşlenebilir- Token’ın özel bir iddiasında oturum düzeyinde gizli bilgi varsa, artık gitti
Testnizer’ın hata ayıklayıcısı tamamen ana süreçte çalışır. Token dizesi panonuzdan süreç içi bir ayrıştırıcıya ve görüntülenmek üzere renderer’a gider. Hiçbir HTTP isteği yapılmaz.
Değişkenlerden token okuma
Bir istekte token oluşturuyor veya alıyorsanız, kopyala yapıştır yapmadan onu
JWT hata ayıklayıcıya okuyabilirsiniz. Token giriş alanında Değişkenden’e
tıklayın ve token’ı tutan ortam değişkenini seçin (örn. {{accessToken}}).
Testnizer değişkeni çözer ve ayrıştırır.
Bu, bir oturum açma isteğinin pm.environment.set('accessToken', ...) ile
sakladığınız bir token döndürdüğü durumlarda kullanışlıdır — uygulamadan
çıkmadan JWT aracına geçin ve mevcut token’ı inceleyin.
Token oluşturma
Hata ayıklayıcı tasarım gereği yalnızca okuma amaçlıdır. Ön istek scriptinde
test token’ları oluşturmak için crypto modülünü kullanın:
// Ön istek scripti — HS256 ile JWT imzala
const crypto = require('crypto')
const header = Buffer.from(JSON.stringify({ alg: 'HS256', typ: 'JWT' })).toString('base64url')
const payload = Buffer.from(JSON.stringify({
sub: pm.environment.get('userId'),
iat: Math.floor(Date.now() / 1000),
exp: Math.floor(Date.now() / 1000) + 3600,
})).toString('base64url')
const secret = pm.environment.get('signingSecret')
const sig = crypto.createHmac('sha256', secret)
.update(`${header}.${payload}`)
.digest('base64url')
pm.environment.set('testToken', `${header}.${payload}.${sig}`)
Elde edilen {{testToken}} değişkeni istek header’larında kullanılabilir ve
Değişkenden seçeneğiyle JWT hata ayıklayıcıda incelenebilir.