Glossary
JWT
JSON Web Token
By Buğra SözeriPublished Updated
JWT (JSON Web Token, "jot" olarak telaffuz edilir), taraflar arasında imzalı iddiaları iletmek için RFC 7519'da tanımlanan token biçimidir. JWT, nokta ile ayrılmış üç base64url kodlu segmenttir: başlık.yük.imza.
Başlık, imzalama algoritmasını (HS256, RS256, ES256 vb.) bildirir. Yük, iddia JSON nesnesidir — sub (konu), iss (veren), exp (sona erme), iat (verilme zamanı) ve uygulamaya özgü alanlar. İmza, başlıkta bildirilen algoritma ve anahtar kullanılarak base64url(başlık) + "." + base64url(yük) üzerinden hesaplanır.
JWT'ler durumsuz kimlik doğrulama (sunucunun oturumları saklamasına gerek yok; her istekte imzayı doğrular), servisler arası yetkilendirme (OAuth 2.0 taşıyıcı tokenleri, OpenID Connect kimlik tokenleri) ve erişim iddialarını kodlayan kısa ömürlü URL'ler için kullanılır.
Yaygın tuzaklar: alg: none'a güvenmek, asimetrik beklenirken simetrik anahtarlı tokenları kabul etmek, exp'yi doğrulamamak. JWT çözücü, bir tokenın içeriklerini inceler — imzayı doğrulamaz; zira doğrulama, verenin anahtarını gerektirir.
Çalışılmış örnek
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NSIsIm5hbWUiOiJBbGljZSIsImlhdCI6MTcxNjQwMDAwMCwiZXhwIjoxNzE2NDg2NDAwfQ.signature JWT'ini çözümleyin. Başlık: {"alg":"HS256","typ":"JWT"}. Yük: {"sub":"12345","name":"Alice","iat":1716400000,"exp":1716486400}. Token Unix zamanı 1716400000'de (Mayıs 2024'te bir an) verildi ve 86.400 saniye sonra — tam olarak 24 saat — sona eriyor. Bu tokenı alan bir doğrulayıcı şunları yapmalıdır: (1) paylaşılan sırrı kullanarak başlık.yük'ün HMAC-SHA256'sını yeniden hesaplamak ve imzayla eşleştiğini kontrol etmek; (2) exp'yi geçerli zamanla karşılaştırmak ve süresi dolmuşsa reddetmek; (3) isteğe bağlı olarak iss (veren) ve aud (hedef kitle) beklenen değerlerle eşleşiyor mu kontrol etmek. Kullanıcının tarayıcısı, herhangi bir aracı proxy veya tokenı çalan saldırgan dahil herkes, yükü base64 ile çözümleyebilir ve Alice'in adını ve kullanıcı kimliğini görebilir. Token imzalıdır, şifrelenmemiştir.
Ne zaman ve neden önemli
JWT, durumsuz kimlik doğrulamanın tasarım tercihi olduğu her durumda önemlidir — REST API'larla konuşan SPA'lar, arka uç hizmetleri olan mobil uygulamalar, OAuth 2.0/OpenID Connect federasyonları ve mikro hizmetten mikro hizmete yetkilendirme için tipiktir. Kaçınılacak hatalar: (1) yüke KVB veya hassas veri koymak (tokena sahip olan herkesin okuyabileceği); (2) iptal stratejisi olmadan uzun sona erme süreleri kullanmak (24 saat ve üzeri tokenlar çalındığında tehlikelidir); (3) alg: none'ı kabul etmek veya tokenın algoritmayı seçmesine izin vermek; (4) JWT'leri XSS'nin çalabileceği localStorage'da saklamak — SameSite=Lax ile httpOnly çerezleri tercih edin; (5) aud'yi doğrulamamak, kardeş hizmetler için verilen tokenları kabul etmek. İyi çalışan model: 5-15 dakikalık erişim tokenleri + iptal edilebilir uzun ömürlü yenileme tokenleri + gerçekten hassas işlemler için opak sunucu tarafı oturumu. Referans: RFC 8725 — JWT Güncel En İyi Uygulamaları.
JWT'lerin varsayılan olarak neden şifrelenmediği: vanilla bir JWT imzalıdır ama gizli değildir — tokena sahip olan herkes yükü base64 ile çözümleyebilir ve verenin yerleştirmeyi seçtiği kullanıcının e-postası, rolleri ve uygulamaya özgü veriler dahil her iddiayı okuyabilir. Bu, mühendisleri tekrar tekrar yanıltır: JWT'ye KVB veya dahili kullanıcı kimlikleri koymak ve tokenın siyah kutu olduğunu varsaymak bekleyen bir veri sızıntısıdır. Gizlilik için, uygun şifrelemeyi imzanın yanı sıra beş segmentli token üreten JWE (JSON Web Encryption, RFC 7516) kullanarak yükü şifreleyin. Üretim sistemlerinin çoğu ya KVB'yi yükün dışında tutar ya da sunucu tarafı durum aramaları olan opak oturum tokenleri kullanır.
Yenileme tokenleri, sona erme ve iptal sorunu: durumsuz doğrulama, JWT'nin öne çıkan özelliğidir ve aynı zamanda en büyük operasyonel yüküdür — bir kez verilen JWT, sona erene kadar iptal edilemez. Standart önlem, sunucu tarafı reddetme listesi aracılığıyla iptal edilebilen uzun ömürlü yenileme tokenleriyle (günler veya aylar) eşleştirilmiş kısa ömürlü erişim tokenlerdir (5-15 dakika); istemci, yenileme tokenini periyodik olarak taze bir erişim tokeniyle takas eder. Hassas herhangi bir şey için uzun ömürlü JWT'ler (24 saat ve üzeri) bir anti-modeldir — çalınan bir token, sona erene kadar serbest geçiştir. Convertitive'nin JWT çözücüsü, bir tokenın fazla uzun süre geçerli olup olmadığını hızlıca görebilmeniz için exp iddiasını öne çıkarır. Referans: RFC 7519 — JSON Web Token.
Hesaplayıcıyı deneyin
Sunucu tarafında herhangi bir şey çalıştırmadan başlığı, yükü ve imzayı incelemek için bir JWT yapıştırın.
JWT çözücüyü aç →Frequently asked questions
- JWT nedir?
- JWT (JSON Web Token, 'jot' olarak telaffuz edilir), RFC 7519'da tanımlanan kompakt ve URL güvenli bir token biçimidir. İmzalı iddiaları nokta ile ayrılmış üç base64url kodlu segment olarak kodlar: başlık, yük, imza.
- JWT kimlik doğrulama için nasıl kullanılır?
- Oturum açtıktan sonra sunucu, kullanıcının kimliğini ve sona erme süresini içeren imzalı bir JWT verir. İstemci, sonraki isteklerde Authorization: Bearer başlığında gönderir; sunucu imzayı doğrular ve oturum deposu sorgulamadan iddialara güvenir.
- JWT'ler şifreli midir?
- Hayır — standart bir JWT imzalıdır, şifrelenmemiştir. Tokena sahip olan herkes yükü base64 ile çözümleyebilir ve her iddiayı okuyabilir. Gizli yükler için JWE (JSON Web Encryption) kullanın ya da hassas verileri tokendan tamamen dışarıda tutun.
- En yaygın JWT güvenlik hatası nedir?
- İptal stratejisi olmadan uzun sona erme süreleri (saatler veya günler) kullanmak. Çalınan bir JWT, sona erene kadar geçerlidir; kısa ömürlü erişim tokenleriyle (5-15 dakika) sunucu tarafında iptal edilebilir yenileme tokenlarını birlikte kullanarak bunu azaltın.
Related
Published May 14, 2026 · Last reviewed May 31, 2026