JWT Çözücü

Bir JSON Web Token yapıştırın; başlığını ve yükünü biçimlendirilmiş JSON olarak, exp, iat ve nbf zamanlarını tarih olarak görün ve süresinin dolup dolmadığını öğrenin. İmzalar, gizli anahtar veya açık anahtarla yerel olarak doğrulanabilir.

Başlık (Header)

Yük (Payload)

Talepler

İmza (Signature)

İmzayı doğrula

Tamamen tarayıcınızda çalışır. Hiçbir veri yüklenmez.

Nasıl kullanılır

  1. Token'ın tamamını yapıştırın: noktalarla ayrılmış üç Base64URL bölümü.
  2. Çözülmüş başlığı ve yükü okuyun. exp, iat ve nbf talepleri tarih olarak gösterilir; token'ın süresi dolmuşsa veya henüz geçerli değilse bir uyarı görüntülenir.
  3. İmzayı doğrulamak için HS256, HS384 veya HS512 kullanılıyorsa paylaşılan anahtarı "Gizli anahtar" alanına girin; RS, PS veya ES algoritmaları için PEM biçimindeki açık anahtarı "Açık anahtar (PEM, SPKI)" alanına yapıştırın.
  4. Düzenleyen (issuer), hedef kitle (audience) ve konu (subject) taleplerinin uygulamanızın beklediği değerlerle eşleştiğini kontrol edin.

JWT'nin yapısı

Bir JSON Web Token (RFC 7519), noktalarla ayrılmış üç bölümden oluşur: header.payload.signature. Başlık ve yük, dolgusuz Base64URL ile kodlanmış JSON nesneleridir; token'ların neredeyse her zaman açılış {" karakterlerinin kodlanmış hâli olan eyJ ile başlamasının nedeni budur. İmza, ilk iki bölüm üzerinden, token'da tam olarak göründükleri hâliyle hesaplanır.

  • Başlık (Header): alg alanındaki imzalama algoritması, genellikle "typ": "JWT" ve çoğu zaman anahtarı adlandıran bir kid.
  • Yük (Payload): kullanıcının kim olduğu, token'ı kimin düzenlediği ve ne zaman sona ereceği gibi talepler.
  • İmza (Signature): başlığın ve yükün değiştirilmediğini kanıtlayan bir HMAC, RSA veya ECDSA imzası.

Beş bölümlü bir token, şifrelenmiş bir JWE'dir; içeriği şifre çözme anahtarı olmadan okunamaz.

Kayıtlı talepler

TalepAdAnlamı
issDüzenleyen (Issuer)Token'ı oluşturan ve imzalayan taraf
subKonu (Subject)Token'ın kimin hakkında olduğu, genellikle bir kullanıcı kimliği
audHedef kitle (Audience)Token'ın yönelik olduğu hizmet
expSona erme zamanı (Expiration time)Bu andan sonra token reddedilmelidir
nbfGeçerlilik başlangıcı (Not before)Bu andan önce token reddedilmelidir
iatDüzenlenme zamanı (Issued at)Token'ın oluşturulduğu zaman
jtiJWT kimliği (JWT ID)Yeniden oynatma (replay) saldırılarını tespit etmek için kullanılan benzersiz tanımlayıcı

Zamanlar NumericDate değerleridir: milisaniye değil, 1 Ocak 1970 UTC'den bu yana geçen saniye sayısı. Çözücü bunları okunabilir tarihler olarak gösterir ve cihazınızın saatiyle karşılaştırır.

Kod çözmek doğrulamak değildir

Yük yalnızca kodlanmış olup şifrelenmediği için herkes bir JWT'nin kodunu çözebilir; içine asla parola veya başka gizli bilgi koymayın. Güven yalnızca imzanın doğru anahtarla kontrol edilmesinden gelir. Token kabul eden bir sunucu ayrıca şunları yapmalıdır:

  • yalnızca beklediği algoritmaya izin vermeli ve imzasız bir token'ı belirten "alg": "none" değerini reddetmelidir;
  • HMAC ile RSA arasındaki seçimi asla token başlığına bırakmamalıdır; aksi takdirde bir saldırgan, açık anahtarınızı HMAC gizli anahtarı olarak kullanarak sahte bir token imzalayabilir;
  • her istekte exp, nbf, iss ve aud değerlerini kontrol etmelidir.

Bu sayfadaki isteğe bağlı doğrulama, tarayıcınızda yerleşik olarak bulunan Web Crypto API'yi kullanır. Kod çözme ve doğrulama cihazınızda gerçekleşir ve hiçbir şey yüklenmez. Genel bir kural olarak, üretim ortamındaki imzalama anahtarlarını veya canlı token'ları güvenmediğiniz web sitelerine asla yapıştırmayın.

Sıkça sorulan sorular

Bu çözücüye JWT yapıştırmak güvenli mi?

Token, tarayıcınızdaki JavaScript tarafından çözülür ve doğrulanır; hiçbir zaman bir sunucuya gönderilmez. Süresi dolmamış bir token'ın, onu elinde bulunduran herkes için parola işlevi gördüğünü unutmayın. Bu nedenle ekran görüntüsü veya günlük kaydı paylaşırken test token'larını ya da süresi dolmuş token'ları tercih edin.

Gizli anahtar olmadan bir JWT'nin kodunu çözebilir miyim?

Evet. Başlık ve yük, Base64URL ile kodlanmış düz JSON'dur; bu yüzden hiçbir anahtar olmadan okunabilir. Gizli anahtar veya açık anahtar yalnızca imzayı doğrulamak için gerekir.

Çözücü neden token'ımın süresinin dolduğunu söylüyor?
Token'ın exp talebi, cihazınızdaki geçerli zamandan önceye denk geliyor. Token'ın hâlâ geçerli olması gerekiyorsa sistem saatinizi ve token'ı düzenleyen tarafın yapılandırdığı geçerlilik süresini kontrol edin.
Hangi imza algoritmaları doğrulanabilir?

Paylaşılan bir gizli anahtarla HS256, HS384 ve HS512; PEM biçiminde bir açık anahtarla RS256, RS384, RS512, PS256, PS384, PS512, ES256, ES384 ve ES512.

"alg": "none" ne anlama gelir?

RFC 7518'de tanımlanan, imzası boş olan, güvenli olmayan (unsecured) bir JWT'yi belirtir. Böyle bir token'ı herkes oluşturabilir veya değiştirebilir; bu nedenle imzalı token bekleyen bir sunucu onu her zaman reddetmelidir.