DevBento logoDevBento
Araçlar/JWT Çözücü/JWT Token Çözümleme

JWT Token Çözümleme

Örnek bir JWT token'ını çözerek header, payload claim'leri (sub, iss, exp, iat) ve imzayı görün. JWT yapısı, Base64url kodlama ve güvenlik tuzaklarını kapsar.

İlgili Araçlar
b64Base64 Kodlayıcı/Çözücü
Re-encode a decoded header or payload
{}JSON Formatlayıcı ve Doğrulayıcı
JSON verilerini güzel yazdırma, küçültme ve doğrulama aracı. Sözdizimi vurgulama, interaktif ağaç görünümü ve satır numaraları ile anlık hata tespiti.
shaHash Oluşturucu
Metin veya dosyalardan MD5, SHA-1, SHA-256 ve SHA-512 hashleri üretin. Web Crypto API ile hesaplanır. Tüm işlemler tarayıcınızda istemci tarafında çalışır.
unixUnix Zamanı Dönüştürücü: Epoch Time Çevirme Aracı
Unix timestamp'leri insan tarafından okunabilir tarihlere veya tarihten timestamp'e çevirin. Canlı saat, saat dilimi desteği ve otomatik algılama.

Çözülmüş Header

{
  "alg": "HS256",
  "typ": "JWT"
}

Çözülmüş Payload

{
  "sub": "1234567890",
  "name": "John Doe",
  "email": "john@example.com",
  "role": "admin",
  "iat": 1516239022,
  "exp": 1735689600
}

İmza

TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

İmza çözülemez. Bu, kodlanmış veri değil, bir HMAC-SHA256 işleminin çıktısıdır. Doğrulamak için, token verilirken kullanılan gizli anahtara ihtiyacınız vardır.

Üç Parçalı JWT Yapısı

Bir JWT, noktalarla birleştirilmiş üç Base64url kodlu bölümdür:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0
.
TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ

Yapı, RFC 7519 ve RFC 7515 ile tanımlanmıştır. Her bölüm farklı bir amaca hizmet eder:

Header, token türünü ve imzalama algoritmasını belirtir. alg, doğrulayıcıya imzayı hesaplamak için hangi algoritmanın kullanıldığını söyler. typ, standart token’lar için her zaman JWT’dir. Bazı token’lar ayrıca hangi anahtarın kullanıldığını belirtmek için kid (key ID) içerir; bu, bir yetkilendirme sunucusu anahtarları döndürdüğünde önemlidir.

Payload

Payload, claim’leri içerir: özne hakkındaki ifadeler ve ek meta veriler. Standart kayıtlı claim’lerin token’ları kompakt tutmak için kısa adları vardır (sub, iss, exp). Özel claim’ler uygulamanızın ihtiyaç duyduğu her şey olabilir, ancak JWT spesifikasyonu çakışmaları önlemek için özel claim’ler için ad alanlı bir format kullanılmasını önerir (örneğin, https://myapp.com/role).

İmza

İmza, header’da belirtilen algoritma kullanılarak base64url(header) + "." + base64url(payload) üzerinden hesaplanır. HS256 için bu HMAC-SHA256(secret, data)’dır. RS256 için RSA-SHA256(privateKey, data)’dır. Doğrulayıcı, alınan header ve payload’dan imzayı yeniden hesaplar ve üçüncü bölümle karşılaştırır. Eşleşmezlerse, token kurcalanmıştır.

Base64url Kodlama

JWT’ler, Base64’ün URL güvenli bir varyantı olan Base64url kullanır. + yerine - ve / yerine _ kullanır ve = dolgu karakterlerini atlar. Bu, JWT token’larının URL sorgu parametrelerine ve HTTP başlıklarına yüzde kodlama gerektirmeden dahil edilmesini güvenli hale getirir.

Standart Base64, = dolgu karakterleri gerektirir ve URL’lerde özel anlamı olan + veya / içerebilir. Base64url, URL’lerde kaçış gerektirmeyen karakterleri kullanarak bunların hepsinden kaçınır.

Payload bölümünü manuel olarak çözmek için:

# Payload bölümü (iki nokta arasındaki orta kısım)
PAYLOAD="eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0"

# Dolgu ekle ve çöz (macOS/Linux)
python3 -c "
import base64, json, sys
s = sys.argv[1]
pad = s + '=' * (4 - len(s) % 4)
decoded = base64.urlsafe_b64decode(pad)
print(json.dumps(json.loads(decoded), indent=2))
" "$PAYLOAD"

Standart Claim’ler Açıklaması

Claim Adı Tür Açıklama
sub Subject string Token’ın kime ait olduğu. Tipik olarak bir kullanıcı ID’si.
iss Issuer string Token’ı kimin verdiği. Genellikle bir URL (https://auth.example.com).
exp Expiration timestamp Unix zamanı. Token bu zamandan sonra reddedilmelidir.
iat Issued At timestamp Unix zamanı. Token’ın oluşturulduğu zaman.
aud Audience string/array Token’ın kime ait olduğu. API, listelendiğini doğrulamalıdır.
nbf Not Before timestamp Unix zamanı. Token bu zamandan önce kabul edilmemelidir.
jti JWT ID string Bu token için benzersiz bir tanımlayıcı. Tekrar oynatmayı önlemek için kullanılır.

Tüm claim’ler gerekli değildir. exp ve sub en yaygın kullanılanlardır. aud claim’i, aynı yetkilendirme sunucusunu paylaşan hizmetler için önemlidir. Bu olmadan, A hizmeti için tasarlanmış bir token B hizmetine karşı kullanılabilir.

Çözmek Güvenmek Anlamına Gelmez

JWT çözücüleri hakkında anlaşılması gereken en önemli şey budur. Bir token’ı çözmek, içindeki claim’leri ortaya çıkarır. Bu claim’lerin doğru olup olmadığını veya token’ın meşru olup olmadığını söylemez.

Bir saldırgan istediği herhangi bir JWT’yi elle oluşturabilir. İmza doğrulaması olmadan, gerçek bir token’ı sahte olandan ayırmanın bir yolu yoktur. Bu önemlidir çünkü:

  1. alg: none saldırısı. Bazı eski JWT kütüphaneleri, header’da "alg": "none" olan ve imzası olmayan token’ları geçerli kabul ederdi. İmzasız token’ları asla kabul etmeyin.

  2. Algoritma karışıklığı saldırıları. Sunucunuz RS256 (asimetrik) kullanıyorsa, bir saldırgan header’da "alg": "HS256" olan ve genel anahtarınızı HMAC gizli anahtarı olarak kullanan bir token gönderebilir. Zayıf algoritma uygulamasına sahip kütüphaneler bunu başarıyla doğrular. Beklenen algoritmayı her zaman açıkça belirtin.

  3. Süresi dolmuş token’lar. Çözme, exp claim’ini ortaya çıkarır, ancak yine de geçerli zamanın onu geçip geçmediğini kontrol etmeniz gerekir.

Üretimde, doğrulama, algoritma sabitleme ve süre sonu kontrolünü yöneten, iyi bakımı yapılan bir JWT kütüphanesi kullanın. JWT doğrulamasını asla kendiniz uygulamayın.

JWT’ler Nerelerde Kullanılır

OAuth 2.0 / OpenID Connect

OAuth akışlarındaki access token’lar ve ID token’ları sıklıkla JWT’dir. OIDC’deki ID token her zaman bir JWT’dir. Access token’lar, yetkilendirme sunucusuna bağlı olarak JWT olabilir veya olmayabilir.

API kimlik doğrulaması

Bir sunucu, bir kullanıcı oturum açtığında bir JWT verir. İstemci, sonraki isteklerde bunu Authorization: Bearer <token> başlığında gönderir. Sunucu, imzayı doğrular ve kullanıcıyı tanımlamak ve izinleri kontrol etmek için claim’leri okur.

Durumsuz oturum verileri

Bazı uygulamalar, her istekte bir veritabanı sorgusunu önlemek için oturum durumunu (kullanıcı ID’si, rol, tercihler) JWT payload’ında kodlar. Takas: token’lar, ek altyapı olmadan (bir kara liste veya kısa süre sonu + refresh token’lar) süre sonundan önce iptal edilemez.

Servisten servise kimlik doğrulaması

İç mikro hizmetler, genellikle kısa süre sonu süreleriyle (saatler yerine dakikalar) birbirlerine yapılan çağrıları doğrulamak için JWT’leri kullanır.

JWT Sorunlarını Hata Ayıklama

JWT ile doğrulanmış bir istek başarısız olduğunda, bir çözücü ulaşılacak ilk araçtır:

İmza hataları, teşhis için gerçek gizli veya genel anahtarı gerektirir. Bir çözücü size bir imzanın neden yanlış olduğunu söyleyemez, yalnızca onu oluşturmak için hangi algoritmanın kullanıldığını söyleyebilir.

🔒

Nothing you paste leaves this tab. Every tool runs entirely in your browser — no upload, no server, no account.

© 2026 devbento.dev · yerel olarak geliştirildiChangelog