RevealTheme logo

JWT Kod Çözücü

JSON Web Token'larının (JWT) kodunu anında çözün. Tarayıcınızda çalışır: token'lar cihazınızdan asla ayrılmaz, bu nedenle üretim ortamı sırlarıyla kullanmak güvenlidir.

Bu araç nasıl kullanılır

  1. 1

    JWT'nizi giriş alanına yapıştırın.

  2. 2

    Decode'a tıklayın. Header ve payload ayrıştırılıp görüntülenir.

  3. 3

    Algoritmayı, talepleri (claims), son kullanma tarihini ve düzenleyiciyi inceleyin.

JWT nedir ve nasıl çalışır?

Bir JSON Web Token (JWT, RFC 7519'da tanımlanmıştır), bir kullanıcı hakkındaki bir dizi talebi (claims) temsil etmenin, bu taleplerin değiştirilmediğine dair kriptografik kanıtla birlikte sunulan, kompakt ve URL açısından güvenli bir yoludur. JWT'ler çoğu modern web yığınında kimlik doğrulamasını yürütür: oturum açtığınızda, sunucu kullanıcı kimliğinizi ve izinlerinizi içeren bir JWT oluşturur, bunu gizli bir anahtarla imzalar ve size geri gönderir. Tarayıcınız token'ı saklar (genellikle localStorage'da veya bir çerezde) ve onu sonraki her isteğin Authorization başlığına ekler. Sunucu her istekte imzayı doğrular: imza geçerliyse token'ın taleplerine güvenilir; token değiştirilmişse imza bozulur ve istek reddedilir. JWT'lerin Base64URL ile kodlanmış ve noktalarla ayrılmış üç bölümü vardır: başlık, imzalama algoritmasını belirtir (HMAC-SHA256 için HS256, RSA için RS256, ECDSA için ES256, imzasız token'lar için none — ki bu tehlikelidir ve reddetmeniz gerekir); yük (payload) gerçek talepleri içerir (özne için 'sub', son kullanma için 'exp', düzenlenme tarihi için 'iat' gibi standart talepler ile uygulamanızın tanımladığı her türlü özel talep); imza ise başlığın ve yükün, sırrı elinde bulunduran biri tarafından imzalandığının kanıtıdır. Bu kod çözücü, kamuya açık bilgi olan ilk iki bölümü ortaya çıkarır; imza yalnızca anahtarla doğrulanabilir; bu yüzden her JWT kod çözücü, talepleri doğrulamadan gösterir.

Yaygın kullanım örnekleri

  • İstemcinizin gönderdiği JWT'yi çözerek kimlik doğrulama sorunlarını ayıklayın — hangi taleplerin bulunduğunu, kimin düzenlediğini ve ne zaman süresinin dolduğunu tam olarak görün.

  • Alt servisler için talep yapısını anlamak amacıyla API ağ geçidi JWT'lerini (AWS Cognito, Auth0, Okta) inceleyin.

  • Özel taleplerin (organizasyon kimliği, rol, özellik bayrakları) token düzenleme kodunda doğru ayarlandığını doğrulayın.

  • Son kullanma süresinin uzatıldığını doğrulamak için yenileme öncesi ve sonrası tokenları karşılaştırın.

  • Bir tokenın algoritmasını denetleyin — üretimde RS256 veya ES256 kullanıldığını, asla 'none' olmadığını doğrulayın.

  • Sunucu günlüklerindeki base64url yüklerini okunabilir taleplere çevirin.

Sıkça sorulan sorular

Üretim JWT'leriyle kullanmak güvenli mi?
Evet. Kod çözme tamamen tarayıcınızda yerel JavaScript aracılığıyla gerçekleşir: token asla sunucularımıza ulaşmaz veya herhangi bir günlükte görünmez. Bunu, kod çözme sırasında DevTools → Ağ sekmesini açarak doğrulayabilirsiniz: hiçbir giden istek tetiklenmez. Yine de JWT'leri kimlik bilgileri gibi ele alın: kod çözücünün nerede çalıştığına bakılmaksızın, bunları URL'lere, ekran görüntülerine veya paylaşılan belgelere yapıştırmayın.
Bu, imzayı doğrular mı?
Hayır. İmza doğrulaması, sırrı (HS256 için) veya açık anahtarı (RS256/ES256/PS256 için) gerektirir. Bir JWT'yi doğrulamak için sizden sırrınızı isteyen web araçları bir güvenlik tehlike işaretidir: imzalama anahtarınızı bir yabancıya göndermiş olursunuz. İmzaları sunucuda veya kontrolünüzdeki bir kitaplıkla (jose, jsonwebtoken) doğrulayın.
JWT'min süresi dolduysa ne olur?
Son kullanma, kod çözmeyi engellemez: 'exp' talebi, yükün içindeki yalnızca bir veri parçasıdır. Kodu çözülmüş yükte 'exp' değerini arayın: bu bir Unix zaman damgasıdır (1970'ten bu yana geçen saniyeler). Son kullanma tarihini kendi saat diliminizde görmek için bunu Zaman Damgası Dönüştürücümüz ile çevirin. 'exp' zaten geçmişse, kod çözücü onu okumaya devam etse bile, token uyumlu herhangi bir doğrulayıcı tarafından reddedilir.
JWT'ler şifrelenebilir mi?
Evet: buna JWE (JSON Web Encryption, RFC 7516) denir. Bu araç, yükün imzalandığı ancak görünür olduğu JWS'yi (JSON Web Signature, yaygın durum) ele alır. JWE token'ları, 3 yerine noktalarla ayrılmış 5 bölüme sahiptir ve şifresinin çözülmesi için alıcının özel anahtarını gerektirir. Token'ınızın 5 bölümü varsa, JWE uyumlu bir araca ihtiyacınız vardır.
'alg': 'none' ne anlama gelir ve tehlikeli mi?
'none', imza olmadığı anlamına gelir: token imzasızdır ve herkes herhangi bir talebi taklit edebilir. Üretim sistemleri, 'alg: none' içeren token'ları açıkça reddetmelidir. Bazı kitaplıklar bunları varsayılan olarak kabul eder (çok iyi bilinen bir CVE sınıfı). Her zaman yalnızca uygulamanızın beklediği algoritmalara izin verin.
Oturum çerezleri yerine neden JWT kullanılır?
JWT'ler durumsuzdur: sunucunun bir oturumu sorgulamasına gerek yoktur; token'ın kendisi kullanıcının kimliğini ve izinlerini içerir. Bu, JWT'leri dağıtık sistemler ve API'ler için ideal kılar. Oturum çerezleri durumludur (sunucuda oturum depolaması gerektirir) ancak geçersiz kılınmaları daha kolaydır (yalnızca oturumu silmeniz yeterlidir). Bunun bedeli: JWT'ler daha iyi ölçeklenir, ancak token sona erene kadar 'bir kullanıcının oturumunu kapatamazsınız'.
Bir JWT'nin standart talepleri nelerdir?
RFC 7519 şunları tanımlar: iss (düzenleyici), sub (özne, genellikle kullanıcı kimliği), aud (hedef kitle), exp (son kullanma zamanı), nbf (geçerlilik başlangıcı), iat (düzenlenme zamanı), jti (JWT kimliği). Bunların ötesinde, uygulamalar 'roles', 'permissions' veya 'tenant_id' gibi özel talepler ekler. Özel talepleri küçük tutun: JWT'ler her isteğin başlığında taşınır ve bant genişliği tüketiminizi artırır.

İlgili araçlar