JotTools .

JWT Nasıl Çözülür (ve Çözmek Neden Doğrulamak Değildir)

JotTools Team 3 dk okuma
Bu rehberin aracı JWT Çözücü aracını aç

Bir kimlik doğrulama akışını ayıklıyorsunuz ve biri size uzun, anlamsız bir karakter dizisi uzatıyor: eyJhbGciOi.... Bu bir JSON Web Token, yani JWT’dir ve nasıl yapıldığını öğrendiğinizde içinde saniyeler içinde okuyabileceğiniz yapılandırılmış veriler bulunur. Bu rehber, bir JWT’nin nelerden oluştuğunu, claim’lerini incelemek için onu nasıl çözeceğinizi ve geliştiricileri sürekli yanıltan tek güvenlik noktasını açıklar: bir token’ı çözmek, onu doğrulamakla aynı şey değildir. Ücretsiz JWT Çözücü ile birlikte takip edebilirsiniz.

Bir JWT nelerden oluşur

JWT, iki taraf arasında imzalı bilgi taşımanın kompakt bir yoludur ve çoğunlukla bir kullanıcının oturum açtıktan sonra kim olduğunu kanıtlamak için kullanılır. Yakından baktığınızda, noktalarla ayrılmış üç bölüme bölündüğünü görürsünüz:

header.payload.signature

İlk iki bölümün her biri Base64url ile kodlanmış bir JSON nesnesidir; bu yüzden okunabilir metin yerine rastgele karakterler gibi görünür. Üç parça şunlardır:

  • Header (başlık). Token’ı tanımlayan küçük bir JSON, başlıca imzalama algoritması (HS256 veya RS256 gibi) ve token türü.
  • Payload (yük). İlginç kısım. Burada claim’ler tutulur: kullanıcının kim olduğu, token’ın ne zaman oluşturulduğu, ne zaman sona erdiği ve veren tarafın eklediği özel veriler.
  • Signature (imza). Başlık, yük ve gizli bir anahtardan oluşturulan kriptografik bir mühür. Bir sunucunun token’ın değiştirilmediğini doğrulamasını sağlayan şey budur.

Noktalar gerçek ayırıcılardır, bu nedenle bir JWT her zaman noktalarla birleştirilmiş üç Base64url bloktan oluşur.

Claim’ler nasıl çözülür ve okunur

Çözme işlemi, başlığın ve yükün Base64url kodlamasını tersine çevirerek içindeki JSON’u okuyabilmenizi sağlar. Ücretsiz JWT Çözücü bunu anında yapar ve önemli olarak tamamen tarayıcınızda çalışır, böylece yapıştırdığınız token hiçbir yere gönderilmez.

  1. Token’ın tamamını kopyalayın, noktalar dahil üç bölümün hepsini.
  2. Onu JWT Çözücü içine yapıştırın.
  3. Çözülmüş başlık ve yükü biçimlendirilmiş JSON olarak okuyun.

Yük içinde genellikle standart claim’leri görürsünüz: özne için sub (genellikle bir kullanıcı kimliği), oluşturulma zamanı için iat, sona erme için exp ve veren taraf için iss. Zaman değerleri tipik olarak Unix zaman damgalarıdır. Bunları okumak, ayıklama yaparken ‘bu token sona erdi mi?’ veya ‘bu hangi kullanıcı için?’ gibi soruları yanıtlamanın en hızlı yoludur.

Çözmek doğrulamak değildir

İşte hafızanıza kazımaya değer nokta. Token’a sahip olan herkes, hiçbir anahtar ve şifre olmadan başlığı ve yükü çözebilir. Kodlama tasarım gereği tersine çevrilebilirdir, tıpkı Base64 gibi. Çözme işlemi size token’ın ne iddia ettiğini söyler, ancak bu iddiaların güvenilir olup olmadığı hakkında hiçbir şey söylemez.

Doğrulama ayrı ve kriptografik bir adımdır. Bir sunucu, gizli veya genel anahtarı kullanarak imzayı yeniden hesaplar ve token’daki imzayla eşleştiğini kontrol eder. Yalnızca geçerli bir imza, token’ın söylediği kişi tarafından verildiğini ve değiştirilmediğini kanıtlar. Bir çözücü bunu sizin için yapamaz, çünkü anahtara sahip değildir. Bu yüzden asla yalnızca bir çözmeye dayanarak ‘bu kullanıcı kimliği doğrulanmış’ diye karar vermeyin, bu kontrol doğru anahtarla sunucuda gerçekleşmelidir.

Yüke asla sır koymayın

Yük, token’ı elinde tutan herkes tarafından kolayca okunabildiği için, hassas hiçbir şey için yanlış bir yerdir. Bir JWT yüküne şifreler, API anahtarları veya özel kişisel veriler koymayın, çünkü token’ı ele geçiren veya kendisine verilen herkes için fiilen herkese açıktır. İmza değiştirmeyi engeller, okumayı değil. Yükü varsayılan olarak görünür kabul edin ve sırları sunucu tarafında tutun.

Token’ları incelemek için ilgili araçlar

Bir JWT çözme işlemi genellikle birkaç komşu göreve yol açar. Base64url katmanının kendisini anlamak istiyorsanız, Base64 Kodlama ve Çözme aracı token’ın kullandığı aynı kodlamayla deney yapmanıza olanak tanır. Çözülmüş bir yükünüz olduğunda, JSON Biçimlendirici onu girintiler ve düzenler, böylece derinlemesine iç içe geçmiş bir claim seti kolayca taranabilir hale gelir. Ve imzanın nasıl oluşturulduğu üzerine düşünüyorsanız, Hash Oluşturucu tek yönlü hashlemenin nasıl davrandığını görmenin iyi bir yoludur, çünkü imzalama ilgili kriptografik temellere dayanır.

Kısa versiyon

Bir JWT, noktalarla birleştirilmiş üç Base64url ile kodlanmış bölümdür: başlık, yük ve imza. Çözme işlemi kodlamayı tersine çevirir, böylece claim’leri okuyabilirsiniz, bu da ayıklama için mükemmeldir. Yalnızca şunu unutmayın: çözmek doğrulamak değildir. Yük herkes tarafından okunabilir, bu nedenle asla içine sır koymayın ve bir token’a güvenmeden önce imzayı her zaman sunucuda doğrulayın. Birini hızlı ve gizli bir şekilde incelemeniz gerektiğinde, ücretsiz JWT Çözücü onu doğrudan tarayıcınızda okur.

JWT Çözücü aracını şimdi dene

Ücretsiz online JWT çözücü. Bir JSON Web Token yapıştırın, başlık ve yük kısmını anında temiz JSON olarak okuyun. Tarayıcıda çalışır, hiçbir şey yüklenmez.

JWT Çözücü aracını aç

İlgili ücretsiz araçlar