JWT Çözücü

RSS

Başlığını, payload'unu ve son kullanma zamanını görmek için bir JSON Web Token yapıştırın. Çözme işlemi yerel olarak yapılır; token'ınız hiçbir yere gönderilmez.

%100 tarayıcınızda çalışır. Yapıştırdığınız hiçbir şey yüklenmez veya saklanmaz.

Başlık (Header)

Payload (yük)

Talepler (Claims)

İmza gösterilir ancak doğrulanmaz: doğrulama için gizli anahtar veya açık anahtar gerekir ve bunları asla bir web sitesine yapıştırmamalısınız.

JWT çözücü nasıl kullanılır?

  1. Genellikle Authorization: Bearer ifadesinden sonra gelen uzun dizeyi, yani bir JSON Web Token'ı yapıştırın.
  2. Başlık (header) ve payload (yük) çözülür ve biçimlendirilmiş JSON olarak gösterilir.
  3. exp, iat ve nbf gibi zaman claim'leri okunabilir tarihlere dönüştürülür; böylece token'ın süresinin dolup dolmadığını bir bakışta görürsünüz.
Gizlilik: Üretim ortamı token'larını asla güvenmediğiniz bir siteye yapıştırmayın; geçerli bir token, süresi dolana kadar onu gören herkes tarafından yeniden kullanılabilir. Bu çözücü tamamen tarayıcınızda çalışır: token asla yüklenmez, günlüğe kaydedilmez ya da saklanmaz. Yine de test token'larını tercih edin ve açığa çıktığından şüphelendiğiniz her token'ı iptal edin.

JWT'nin yapısı: üç parça

RFC 7519 ile tanımlanan JSON Web Token, taraflar arasında claim'leri (beyanları) aktarmanın kompakt bir yoludur. Yaygın imzalı biçimi (JWS) noktalarla ayrılmış üç parçadan oluşur:

header.payload.signature

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjMifQ.<signature>
  • Header: token'ı tanımlayan JSON; başlıca imzalama algoritmasını belirtir. eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 çözüldüğünde {"alg":"HS256","typ":"JWT"} olur.
  • Payload: claim'leri, yani kullanıcı ya da oturum hakkındaki beyanları içeren JSON.
  • Signature: kodlanmış header ve payload üzerinden bir gizli anahtarla (HMAC, ör. HS256) ya da özel anahtarla (ör. RS256, ES256) hesaplanan imza.

Her parça, dolgu (padding) içermeyen, URL için güvenli Base64 alfabesi olan base64url ile kodlanır. Token'ların - ve _ içermesinin ve JWT'lerin neredeyse her zaman eyJ ile başlamasının nedeni budur: bir JSON nesnesinin açılıştaki {" karakterleri, ardından tipik bir küçük harfli anahtar adı geldiğinde böyle kodlanır. Kodlamanın kendisini Base64 kodlayıcı ile inceleyebilirsiniz.

Kayıtlı claim'ler

ClaimAdAnlamı
issIssuer (yayımlayan)Token'ı kimin oluşturup imzaladığı.
subSubject (konu)Token'ın kimi ilgilendirdiği; genellikle bir kullanıcı kimliği.
audAudience (hedef kitle)Token'ın hangi hizmet(ler)e yönelik olduğu.
expExpiration time (son kullanma zamanı)Bu zamandan sonra token'ın reddedilmesi gereken Unix zaman damgası.
nbfNot before (öncesinde geçersiz)Bu zamandan önce token'ın henüz geçerli olmadığı Unix zaman damgası.
iatIssued at (yayımlanma zamanı)Token'ın oluşturulduğu Unix zaman damgası.
jtiJWT IDBenzersiz tanımlayıcı; yeniden kullanımı (replay) önlemek için işe yarar.

RFC 7519'da bunların hepsi isteğe bağlıdır; hangilerinin zorunlu olduğuna uygulamalar karar verir. Zaman claim'leri milisaniye değil, saniye cinsindendir; farkı Unix zaman damgası dönüştürücü sayfası açıklıyor.

Sık yapılan hatalar

Çözmek doğrulamak değildir

Bir JWT'yi herkes çözebilir; bu araç da tam olarak bunu yapar. Çözmek, bir token'ın ne iddia ettiğini gösterir, bu iddiaların gerçek olup olmadığını değil. Bir sunucu, payload'daki herhangi bir şeye güvenmeden önce doğru anahtarla imzayı doğrulamalı ve exp, nbf, iss ile aud değerlerini kontrol etmelidir.

Payload gizli değildir

İmzalı bir JWT'yi elinde tutan herkes okuyabilir. Payload'a parola, istemciye açmayacağınız kişisel veriler ya da dahili gizli bilgiler koymayın. İçeriğin gizli kalması gerekiyorsa şifrelenmiş bir JWT (JWE) kullanın ya da veriyi sunucu tarafında tutun.

alg: none ve algoritma karışıklığı

JOSE spesifikasyonları, imzası boş olan güvenliksiz token'lar için bir "alg": "none" değeri tanımlar. Token'ın kendi header'ına uyan bir kütüphane, şuna benzer sahte bir token'ı kabul edebilir:

{"alg": "none", "typ": "JWT"}
{"sub": "admin"}
(boş imza)

Benzer bir saldırı, bir RS256 token'ını HS256'ya çevirerek açık anahtarın HMAC gizli anahtarı gibi kötüye kullanılmasını sağlar. İkisine karşı savunma aynıdır: izin verilen algoritmaları sunucuda yapılandırın ve seçimi asla token'a bırakmayın.

İpuçları

  • Erişim token'larını kısa ömürlü tutun ve daha uzun oturumlar için yenileme (refresh) token'ları kullanın.
  • Sunucular arasında exp ve nbf kontrol ederken küçük bir saat kaymasına (örneğin bir dakika) izin verin.
  • Token'ları elle ayrıştırıp doğrulamak yerine bakımı iyi yapılan bir JWT kütüphanesi kullanın.

Sıkça sorulan sorular

Bu araç bir JWT imzasını doğrulayabilir mi?

Doğrulama, yayımlayanın gizli anahtarını ya da açık anahtarını gerektirir ve backend'inizde yapılmalıdır. Bu araç, hata ayıklarken bir token'ın header'ını ve claim'lerini incelemek içindir.

Token'ım neden süresi dolmuş görünüyor?

exp claim'inin değeri, cihazınızdaki şu anki saatten daha erken. Saatinizin doğru olduğunu ve yayımlayanın exp değerini saniye cinsinden yazdığını kontrol edin.

JWT'ler şifreli mi?

Kullanımdakilerin büyük çoğunluğunu oluşturan imzalı JWT'ler (JWS) yalnızca kodlanır ve imzalanır; bu yüzden herkes okuyabilir. Şifrelenmiş JWT'ler (JWE) üç yerine beş parçadan oluşur.

Token'ımı buraya yapıştırmak güvenli mi?

Çözme işlemi yerel olarak yapılır ve hiçbir şey iletilmez. Genel bir kural olarak, canlı üretim token'larını incelemediğiniz hiçbir online araca yapıştırmaktan kaçının.

Güncellendi

Panoya kopyalandı