← Tüm araçlar

JWT Çözücü

Herhangi bir JSON Web Token'ı tarayıcınızda çözün. Header, payload ve claim'leri anında yerel olarak okuyun. Çözme, doğrulama değildir ve hiçbir şey cihazınızdan çıkmaz.
Başlık
Yük

JWT Decoder Aslında Ne Yapar?

Bir JSON Web Token (JWT), rastgele karakterlerden oluşan uzun ve opak bir dize gibi görünür; ancak ne şifrelidir ne de gizli bir şifredir. İki taraf arasında yapılandırılmış veri taşıyan kompakt, URL güvenli bir kapsayıcıdır. Yukarıdaki kod çözücüye bir token yapıştırın; dizeyi parçalara ayırır ve içindeki gerçek JSON'ı — meta verileri, iddiaları, token'ın kime ait olduğunu ve ne zaman sona ereceğini — gösterir. Her şey doğrudan tarayıcınızda gerçekleşir. Token asla yüklenmez, günlüğe kaydedilmez veya hiçbir yere gönderilmez; incelediğiniz şey canlı bir oturum kimlik bilgisi olduğunda bu durum büyük önem taşır.

Bir JSON Web Token'ının üç parlak Base64url segmentine bölünmesi: başlık, yük ve imza
Noktalı tek bir dize, üç ayrı parça: başlık, yük ve imza.

Üç bölüm, iki nokta

Her düzgün biçimlendirilmiş JWT, noktalarla birleştirilmiş üç Base64url kodlu dizeden oluşur: header.payload.signature. Ayrıştırıcılar bir bölümün nerede bitip diğerinin nerede başladığını bu tek nokta karakteriyle bilir; bu nedenle yanlış sayıda nokta içeren bir token, daha başka hiçbir şey okunmadan reddedilir.

Başlık, token'ın kendisini tanımlayan küçük bir JSON nesnesidir. Neredeyse her zaman typ (tür, genellikle JWT) ve algHS256 (SHA-256 ile HMAC) veya RS256 (SHA-256 ile RSA) gibi imzalama algoritması — içerir. Başlık, bir doğrulayıcıya imzanın tam olarak nasıl üretildiğini söyler.

Yük, çoğu kişinin ilgilendiği bölümdür. İddialar — kullanıcı ve token hakkındaki ifadeler — içeren başka bir JSON nesnesidir. Spesifikasyon iddiaları kayıtlı (standart, ayrılmış adlar), genel ve özel (kendi uygulamanız için oluşturduğunuz özel adlar) olarak sıralar. Yükü çözmek, kimin oturum açtığını, hangi rolü üstlendiğini ve oturumun ne zaman sona ereceğini ortaya çıkarır.

İmza, kriptografik mühürdür. Başlıktaki algoritmayı ve gizli ya da özel anahtarı kullanarak kodlanmış başlık ve yük üzerinden hesaplanır. Her iki bölümü de kapsadığından, başlık veya yükteki herhangi bir değişiklik — tek bir karakter bile — onu geçersiz kılar.

En sık göreceğiniz iddialar

Kayıtlı iddialar, farklı sistemlerin birlikte çalışabilmesi için RFC 7519 tarafından tanımlanan kısa, üç harfli adlardır. Bunların bir kısmı neredeyse her yerde karşımıza çıkar:

  • ississuer (yayıncı): token'ı kimin oluşturduğu (kimlik doğrulama sunucunuz veya kimlik sağlayıcınız).
  • subsubject (konu): token'ın hakkında olduğu asıl, genellikle kalıcı bir kullanıcı kimliği.
  • audaudience (hedef kitle): token'ın kime yönelik olduğu. Bir API, hedef kitlesi kendisi olmayan token'ları reddetmelidir.
  • expexpiration time (son kullanma zamanı): token'ın artık kabul edilmemesi gereken Unix zaman damgası.
  • iatissued at (oluşturulma zamanı): token'ın oluşturulduğu Unix zaman damgası.

nbf (not before, öncesinde geçersiz) ve jti (benzersiz token kimliği) ile de karşılaşabilirsiniz. Zaman damgaları UTC'de 1970'ten bu yana geçen saniyelerdir; bu nedenle bunları okunabilir tarihler olarak gösterebilen bir kod çözücü, bir token'ın zaten süresi dolmuş olup olmadığını kontrol etmek için gereken zihinsel aritmetiği sizin yerinize yapar.

Çözme, doğrulama değildir — insanları en çok zorlayan kısım budur

Bu ayrım, JWT'ler hakkında anlaşılması gereken en önemli tek şeydir. Çözme, içerikleri okumak anlamına gelir: anahtar gerektirmez ve Base64url bir kodlama olduğundan (şifreleme değil) token'ı elinde bulunduran herkes bunu yapabilir. Doğrulama, token'ın gerçek ve üzerinde oynanmamış olduğunu kanıtlamak anlamına gelir; doğru gizli veya genel anahtarla imzayı yeniden hesaplamak ve eşleştiğini teyit etmek demektir.

Bu araç çözer. Token'ın ne söylediğini gösterir, token'ın güvenilir olup olmadığını değil. Bir token sahte, süresi dolmuş veya tekrar oynatılmış olabilir ve yine de son derece temiz görünen JSON'a çözülür. Yalnızca çözülmüş iddialara dayanarak hiçbir zaman yetkilendirme kararı vermeyin. Üretimde imzayı sunucu tarafında doğrular, exp'yi kontrol eder ve iss ile aud'un beklediğinizle eşleştiğini onaylarsınız; bunun için elle yazılmış dize karşılaştırması değil, test edilmiş bir kütüphane kullanırsınız.

Gerçekliği kanıtlayan altın bir imza mühürünün yanında katlanan ve incelenen parlak bir token
Herkes bir token okuyabilir. Yalnızca anahtarı tutan kişi bunun gerçek olduğunu kanıtlayabilir.

Yük bir kasa değildir

Yük yalnızca Base64url kodlu olduğundan, token'ı ele geçiren herkes tarafından okunabilir. İçindeki her şeye herkese açık gözüyle bakın. JWT iddialarına parola, tam kredi kartı numarası, gizli anahtar veya hassas kişisel veri koymayın — burada tek tıklamayla çözebiliyorsanız, bir kopyasını elde eden herkes de çözebilir. İmza, değişikliğe karşı korur, okumaya karşı değil. Yük içeriğini gerçekten gizlemeniz gerekiyorsa bu, tamamen farklı bir spesifikasyon olan JWE (şifreli token'lar) için bir iştir.

Gizlilik ve ilgili araçlar

Bir token'ı incelemek hassas bir eylemdir; bu nedenle bu kod çözücü tamamen istemci tarafında çalışır — ayrıştırma, sekmenizdeki düz JavaScript'tir ve makinenizden hiçbir şey çıkmaz. Canlı bir kimlik bilgisini sunucu destekli bir araca yapıştırmak, bir üçüncü tarafa canlı kimlik bilgisi vermek demektir; bundan kaçınmalısınız. Temeldeki kodlama için Base64 aracımıza ve daha fazla cihaz üzerinde çalışan araç için geliştirici araçlarımızın geri kalanına göz atın.

Sıkça sorulan sorular

JWT şifreli midir?

Hayır. Standart bir JWT, şifreli değil Base64url kodludur. Token'a sahip olan herkes başlığı ve yükü okuyabilir. İçeriğin gizlenmesine ihtiyaç duyarsanız JWE kullanın.

Bu araç imzayı doğruluyor mu?

Hayır. Yalnızca başlığı ve yükü çözüp görüntüler. İmzayı doğrulamak, yayıncı gizlisini veya genel anahtarı gerektirir ve sunucunuzda yapılmalıdır.

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

Evet. Çözme, yerel JavaScript kullanarak tamamen tarayıcınızda çalışır. Token asla yüklenmez, saklanmaz veya herhangi bir sunucuya gönderilmez.

iss, sub, aud, exp ve iat ne anlama gelir?

Bunlar kayıtlı iddialardır: yayıncı, konu, hedef kitle, son kullanma zamanı ve oluşturulma zamanı. Zamanla ilgili üç tanesi saniye cinsinden Unix zaman damgaları kullanır.

Çözdükten sonra gösterilen iddialara güvenebilir miyim?

Tek başlarına güvenemezsiniz. Çözülmüş iddialar sahte veya süresi dolmuş bir token'dan gelebilir. Bunlara güvenmeden önce her zaman imzayı doğrulayın ve son kullanma tarihini sunucu tarafında kontrol edin.

Token'ım neden noktalarla ayrılmış üç bölümden oluşuyor?

Bunlar başlık, yük ve imzadır; her biri Base64url kodlu olup noktalarla birleştirilmiştir. Noktalar ayrıştırıcılara her bölümün nerede başlayıp bittiğini söyler.