JWT Kod Çözücü

JSON Web Token'larını çöz ve incele

Örnek dene

JWT Token

Yerel olarak çalışır · Gizli bilgi yapıştırmak güvenlidir
Bunu da deneyin:JWT Kodlayıcı

JWT (JSON Web Token) Nedir?

JSON Web Token (JWT), RFC 7519'da tanımlanan kompakt ve URL güvenli bir token formatıdır. Bir dizi claim'i JSON nesnesi olarak kodlar, ardından imzalar — ve isteğe bağlı olarak şifreler — böylece alıcı verilerin değiştirilmediğini doğrulayabilir. JWT'ler, REST API'lerde, tek oturum açma sistemlerinde ve mikro hizmet yetkilendirmesinde durumsuz kimlik doğrulamanın fiili standardıdır.

JWT Anatomisi: Header · Payload · Signature

Her JWT, noktalarla ayrılmış üç base64url kodlu segmentten oluşur. Header ve Payload sade JSON'dur — herkes tarafından okunabilir — Signature ise yalnızca doğru anahtar ile doğrulanabilen kriptografik bir değerdir.

Kodlanmış token

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyMTIzIiwibmFtZSI6IkFsaWNlIiwicm9sZSI6ImFkbWluIiwiaWF0IjoxNzE3MjAwMDAwLCJleHAiOjE3MTcyMDM2MDB9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

HeaderPayloadSignature
Header
json
{
  "alg": "HS256",
  "typ": "JWT"
}
Payload
json
{
  "sub":  "user123",
  "name": "Alice",
  "role": "admin",
  "iat":  1717200000,
  "exp":  1717203600
}

Neden JWT Dekoder Kullanılır?

Ham JWT'ler rastgele metin gibi görünür. Bu araç, Header ve Payload'u anında biçimlendirilmiş JSON olarak gösterir; böylece tek bir kod satırı yazmadan claim'leri inceleyebilir, son kullanma sürelerini kontrol edebilir ve algoritma seçimlerini denetleyebilirsiniz.

🔍
Anlık Claim İncelemesi
Payload'daki her claim'i — sub, iss, aud, exp, özel roller, izinler — tek tıklamayla biçimlendirilmiş ve okunabilir şekilde görüntüleyin.
🔓
Gizli Anahtar Gerektirmez
Header ve Payload herkese açıktır; yalnızca Signature için gizli anahtar gereklidir. Bu araç, imzalama anahtarınız olmadan her ikisini de çözer.
⏱️
Süre Sonu ve Zaman Damgası Ayrıştırma
Unix zaman damgaları (exp, iat, nbf) otomatik olarak okunabilir tarihlere dönüştürülür, böylece bir token'ın süresi dolup dolmadığını anında görebilirsiniz.
🔒
Tamamen Tarayıcınızda Çalışır
Her şey yerel olarak işlenir — hiçbir token verisi herhangi bir sunucuya gönderilmez. Hata ayıklama sırasında üretim token'larıyla güvenle kullanabilirsiniz.

Standart JWT Claim Referansı

RFC 7519, yedi kayıtlı claim adı tanımlar. Bunlar zorunlu değildir, ancak birlikte çalışabilirlik için kullanımları güçlü biçimde tavsiye edilir. Payload'a istediğiniz özel claim'leri ekleyebilirsiniz.

ClaimAçıklamaTür
issYayımlayanToken'ı kimin yayımladığını tanımlar — ör. kimlik doğrulama sunucunuzun URL'si veya uygulama adı.string
subKonuJWT'nin ilgili olduğu özneyi tanımlar — genellikle bir kullanıcı kimliği veya hizmet hesabı.string
audHedef KitleHedeflenen alıcıları tanımlar. Alıcı taraf, bunun kendi tanımlayıcısıyla eşleştiğini doğrulamalıdır.string | string[]
expSon Kullanma ZamanıToken'ın bu zamandan sonra kabul edilmemesi gereken Unix zaman damgası. Çalınan bir token'ın zararını sınırlamak için her zaman ayarlayın.number
nbfÖnce DeğilToken'ın bu zamandan önce kabul edilmemesi gereken Unix zaman damgası. Gelecek tarihli token'lar planlamak için kullanışlıdır.number
iatYayımlanma ZamanıToken'ın yayımlandığı Unix zaman damgası. Token yaşını hesaplamak için kullanılır.number
jtiJWT IDToken için benzersiz bir tanımlayıcı. Kullanılan JTI değerlerini sunucu tarafında depolayıp kontrol ederek iptal işlemini mümkün kılar.string

JWT İmzalama Algoritmaları

alg header claim'i, token'ı imzalayan algoritmayı bildirir. Seçim, güvenliği, performansı ve üçüncü taraf hizmetlerin özel anahtar olmadan token'ları doğrulayıp doğrulayamayacağını etkiler.

AlgoritmaAileAnahtar türüNotlar
HS256HMACSymmetricEn yaygın. Paylaşılan gizli anahtar — gizliye sahip olan herkes imzalayabilir ve doğrulayabilir.
HS384HMACSymmetricDaha güçlü HMAC varyantı; orta düzey performans maliyeti.
HS512HMACSymmetricEn güçlü HMAC varyantı.
RS256RSAAsymmetricEn yaygın kullanılan asimetrik algoritma (Google, Auth0, Okta). Açık anahtar, özel anahtar olmadan doğrular.
RS384RSAAsymmetricDaha yüksek güvenlikli RS varyantı.
RS512RSAAsymmetricEn güçlü RS varyantı.
ES256ECDSAAsymmetricEliptik eğri — RSA'dan daha kısa imzalar, mobil ve IoT'da popüler.
PS256RSA-PSSAsymmetricRSA-PSS: PKCS1v1.5 tabanlı RS256'dan daha modern ve güvenli.
noneİmza yok — kritik derecede tehlikeli. Üretimde alg: none içeren token'ları asla kabul etmeyin.

Güvenlik Değerlendirmeleri

Bir JWT'yi çözmek her zaman güvenlidir. Uygun imza doğrulaması olmadan bir JWT'ye güvenmek güvenli değildir. Uygulamanızda token tüketirken bu kuralları aklınızda bulundurun.

Her zaman güvenli
  • Geliştirici araçlarında veya bu araçta bir JWT'yi çözmek ve incelemek
  • Token ömrünü anlamak için exp, iat ve nbf kullanmak
  • Hata ayıklama için payload claim'lerini kaydetmek (hassas kişisel verileri hariç tutun)
  • Token'ın nasıl imzalandığını anlamak için alg header'ını okumak
Asla yapmayın
  • Sunucu tarafında imzayı doğrulamadan payload'daki claim'lere güvenmek
  • alg: none içeren token'ları kabul etmek — bu, hiç imza olmadığı anlamına gelir
  • Yüksek güvenlikli uygulamalarda erişim token'larını localStorage'da saklamak (httpOnly çerezleri tercih edin)
  • Hassas izinler taşıyan token'lar için exp'yi çok uzak bir geleceğe ayarlamak

Yaygın Kullanım Senaryoları

Kimlik Doğrulama Akışlarını Hata Ayıklama
Üretim koduna dokunmadan claim'leri incelemek, gömülü rolleri kontrol etmek ve süre sonunu doğrulamak için tarayıcınızın ağ sekmesinden bir token yapıştırın.
Üçüncü Taraf Token'larını İnceleme
Sağlayıcınızın hangi claim'leri içerdiğini görmek ve bunları beklenen şemanızla karşılaştırmak için Google, Auth0, Okta veya Azure AD'den gelen token'ları hızlıca okuyun.
API Geliştirme ve Test
API uç noktaları yazarken veya test ederken, token oluşturma mantığınızın doğru sub, aud ve scope değerlerini ayarladığını doğrulamak için yetkilendirme header'ını çözün.
Mikro Hizmet Yetkilendirmesi
Hizmet ağlarında her hizmet, yukarı akış arayanın JWT'sini doğrular. Hangi hizmetin token'ı yayımladığını ve hangi izinleri talep ettiğini izlemek için token'ları çözün.
Destek ve Olay Müdahalesi
Bir kullanıcı kimlik doğrulama hatası bildirdiğinde, token'ın süresi dolmuş mu, hedef kitle yanlış mı yoksa gerekli bir claim eksik mi diye kontrol etmek için token'ı çözün.
Güvenlik Denetimi
Algoritma seçimlerini, son kullanma pencerelerini ve hassas verilerin yanlışlıkla şifrelenmemiş payload'da saklanıp saklanmadığını kontrol ederek hizmetler genelinde JWT kullanımını denetleyin.

Kodda JWT Çözme

Header ve Payload base64url kodludur — sadece kodlamayı tersine çevirin. Base64url, +'yı - ile, /'yi _ ile değiştirir ve = dolgusunu çıkarır. Yalnızca Signature gizli anahtara ihtiyaç duyar.

JavaScript (browser)
function decodeJWT(token) {
  const [, payload] = token.split('.')
  const json = atob(payload.replace(/-/g, '+').replace(/_/g, '/'))
  return JSON.parse(json)
}
Node.js
const [, payload] = token.split('.')
const decoded = JSON.parse(
  Buffer.from(payload, 'base64url').toString()
)
Python
import base64, json

def decode_jwt(token):
    payload = token.split('.')[1]
    padding = '=' * (-len(payload) % 4)
    return json.loads(base64.urlsafe_b64decode(payload + padding))
CLI (bash + jq)
TOKEN="eyJhbGc..."
echo $TOKEN | cut -d. -f2 | base64 -d 2>/dev/null | jq .

Sıkça Sorulan Sorular

Gizli anahtar olmadan bir JWT'yi çözebilir miyim?
Evet. Bir JWT'nin Header'ı ve Payload'u sadece base64url kodlu JSON'dur — şifreli değil. Herkes bunları çözebilir ve okuyabilir. Gizli (veya RS/ES algoritmaları için özel anahtar) yalnızca, token'ın değiştirilmediğini doğrulayan imzayı doğrulamak için gereklidir.
Bir JWT'yi çözmek, imzanın doğrulandığı anlamına mı gelir?
Hayır. Çözme yalnızca claim'leri okur. Doğrulama, doğru anahtarı kullanarak kriptografik imzayı kontrol eden ayrı bir adımdır. Uygulamanızdaki herhangi bir claim'e güvenmeden önce imzayı her zaman doğrulayın.
HS256 ile RS256 arasındaki fark nedir?
HS256, yayımlayan ve doğrulayan arasında paylaşılan tek bir simetrik gizli kullanır — gizliye sahip olan herkes token oluşturabilir ve doğrulayabilir. RS256, asimetrik anahtar çifti kullanır: özel anahtar imzalar, açık anahtar doğrular. RS256 ile açık anahtarı dağıtarak dış hizmetlerin token'ları taklit etme yeteneği olmadan doğrulayabilmesini sağlayabilirsiniz.
Base64 çözme neden bazen başarısız olur?
JWT'ler, +'yı - ile, /'yi _ ile değiştiren ve = dolgu karakterlerini atlayan base64url kodlamasını kullanır. Standart base64 decoderlar + ve / gerektirir ve dolgu gerektirebilir. Manuel olarak çözmeden önce dolguyu ekleyin (= ile 4'ün katına tamamlayın) ve karakterleri değiştirin.
Bu araca bir üretim JWT'si yapıştırmak güvenli mi?
Evet — bu araç tamamen tarayıcınızda çalışır ve hiçbir sunucuya veri göndermez. Ancak ekranınızı veya tarayıcı geçmişinizi görebilecek kişilere dikkat edin. Yüksek hassasiyetli token'lar için bunları terminalinizde yerel olarak çözün.
alg: none ne anlama gelir ve tehlikeli midir?
alg: none, token'ın kriptografik imzası olmadığı anlamına gelir — herhangi biri keyfi claim'lerle bir token oluşturabilir ve alg'ı none olarak ayarlayabilir. Bazı erken JWT kütüphaneleri bu token'ları kabul ederek kritik bir güvenlik açığı oluşturdu. Güvenli bir JWT kütüphanesi, açıkça başka türlü yapılandırılmadığı sürece alg: none içeren token'ları her zaman reddeder. Bu kontrolü asla devre dışı bırakmayın.