Testnizer

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:

{
  "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:

İddiaGörüntü
expUnix zaman damgası + ISO 8601 + kalan süre / SÜRESİ DOLDU
iatUnix zaman damgası + ISO 8601
nbfUnix zaman damgası + ISO 8601 + gelecekteyse henüz geçerli değil uyarısı
subDize, değer olduğu gibi gösterilir
issDize, değer olduğu gibi gösterilir
audDize 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:

  1. HTTPS üzerinden JWKS’yi getirir
  2. Token header’ındaki kid ile eşleştirir
  3. 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
  • sub iddiası 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.