Tüm Sistemler Çalışıyor
Network Durumu
Ana Sayfa Blog JWT (JSON Web Token) Nedir? 2026’da Güvenli ve Ölçeklenebilir Kimlik Doğrulama Rehberi

JWT (JSON Web Token) Nedir? 2026’da Güvenli ve Ölçeklenebilir Kimlik Doğrulama Rehberi

JWT (JSON Web Token) Nedir? 2026’da Güvenli ve Ölçeklenebilir Kimlik Doğrulama Rehberi

JWT Nedir ve Neden Kullanmalıyız?

JWT Nedir ve Neden Kullanmalıyız? - JWT (JSON Web Token)
JWT Nedir ve Neden Kullanmalıyız?

JSON Web Token (JWT), üç parçadan oluşan (header, payload, signature) bir veri yapısıdır ve istemci‑sunucu arasında güvenli bilgi alışverişi sağlar. Özellikle RESTful API ve SPA (Single Page Application) mimarilerinde oturum yönetimini hafif ve ölçeklenebilir kılar. Geleneksel çerez‑tabanlı oturum yönetimi, sunucu tarafında oturum bilgisi saklamayı gerektirirken, JWT tamamen istemci tarafında tutulur; bu da stateless bir mimari oluşturur.

JWT’nin en büyük avantajı, signature sayesinde token’ın içeriğinin değiştirilip değiştirilmediğinin hızlı bir şekilde doğrulanabilmesidir. Bu sayede %40 daha az sunucu yükü ve %30 daha düşük gecikme elde edilebilir. Ancak yanlış yapılandırıldığında güvenlik açıkları ortaya çıkabilir; bu yüzden doğru algoritma seçimi ve token süresi yönetimi kritik öneme sahiptir.

JWT’nin Yapısı ve Bileşenleri

JWT üç bölüme ayrılır: header, payload ve signature. Header kısmı, token’ın tipini (genellikle “JWT”) ve imzalama algoritmasını (örneğin HS256, RS256) tanımlar. Payload ise claim adı verilen veri çiftlerini içerir; bu claim’ler standart (iss, sub, exp, iat) ve özel claim’ler olabilir. Signature kısmı ise header ve payload’ın base64url kodlu hali ile gizli bir anahtarın (veya özel anahtarın) birleştirilmesiyle oluşturulur.

Örnek bir JWT şu şekildedir:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6Ikpv
aG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Bu yapı, token’ın bütünlüğünü korur ve sunucu tarafında hızlı bir doğrulama imkanı sunar.

JWT Nasıl Oluşturulur ve Doğrulanır? (Adım Adım)

JWT oluşturma süreci genellikle şu adımları izler:

  1. Header oluşturma: Algoritma ve tip bilgisi JSON formatında hazırlanır ve base64url ile kodlanır.
  2. Payload hazırlama: Kullanıcı kimliği, roller ve token geçerlilik süresi gibi claim’ler eklenir. exp (expiration) claim’i mutlaka belirlenmelidir.
  3. İmzalama: Header ve payload birleştirilir, ardından seçilen algoritma ve gizli anahtar (veya RSA/ECDSA özel anahtarı) kullanılarak imza oluşturulur.
  4. Token’ı istemciye gönderme: Genellikle Authorization: Bearer <token> başlığıyla API isteklerinde kullanılır.

Doğrulama aşamasında sunucu, gelen token’ın header ve payload’ını aynı algoritma ve anahtar ile yeniden imzalayarak karşılaştırır. Eğer imzalar eşleşirse token geçerlidir; aksi takdirde reddedilir.

Node.js ortamında jsonwebtoken kütüphanesi bu işlemleri basitleştirir:

const jwt = require('jsonwebtoken');
const token = jwt.sign({ sub: user.id, role: user.role }, process.env.JWT_SECRET, { expiresIn: '1h' });
jwt.verify(token, process.env.JWT_SECRET, (err, decoded) => {
  if (err) return res.status(401).send('Geçersiz token');
  // decoded içindeki claim’lere erişim
});

Güvenli JWT Kullanımı: En Yaygın Hatalar ve Çözüm Önerileri

Güvenli JWT Kullanımı: En Yaygın Hatalar ve Çözüm Önerileri - JWT (JSON Web Token)
Güvenli JWT Kullanımı: En Yaygın Hatalar ve Çözüm Önerileri

JWT’nin güvenli bir şekilde kullanılmasını engelleyen başlıca hatalar şunlardır:

  • Gizli anahtarın sızdırılması: Anahtar bir versiyon kontrol sistemine (Git) eklenirse, saldırganlar token imzalarını taklit edebilir. Çözüm: Anahtarları .env dosyalarında tutun ve VDS sunucu paketleri gibi izole ortamlar kullanın.
  • Uzun ömürlü token’lar: exp claim’i çok uzak bir tarihe ayarlanırsa, çalınan token uzun süre geçerli kalır. Çözüm: 15‑30 dakikalık kısa ömür ve refresh token mekanizması uygulayın.
  • Algoritma atlatma saldırısı (alg:none): JWT doğrulama kütüphanesinin algoritma kontrolünü atlaması, saldırganın imzasız token göndermesine izin verir. Çözüm: Kütüphane ayarlarında sadece güvenli algoritmaları (HS256, RS256) kabul edin.
  • Payload’da hassas veri saklamak: JWT şifrelenmez, sadece imzalanır; bu yüzden şifre, kredi kartı gibi bilgiler payload’da bulunmamalıdır.

Bu hataları önlemek, kurumsal hosting ortamında güvenlik duvarı (WAF) ve WAF güvenlik duvarı entegrasyonu ile ek bir koruma katmanı sağlar.

JWT ve Diğer Kimlik Doğrulama Yöntemleri Karşılaştırması

ÖzellikJWTÇerez‑Tabanlı OturumOAuth 2.0 Access Token
Stateless (Sunucu Durumsuz)EvetHayırEvet
Taşıma Ağırlığı≈ 1‑2 KB≈ 4‑6 KB (oturum verisi)≈ 1‑2 KB
Güvenlikİmza ile koruma, ancak payload açıkSunucu tarafı saklama, çerez güvenliğiScope ve izin tabanlı, token revocation
Yeniden KullanımRefresh token ile desteklenirOturum yenileme otomatikRefresh token yaygın
Uygulama SenaryosuSPA, mikro servis, mobilMonolitik web siteleriÜçüncü parti API entegrasyonları

Bu tablo, projenizin mimarisine göre en uygun kimlik doğrulama yöntemini seçmenize yardımcı olur. Örneğin, mikro servis mimarisinde JWT tercih edilirken, geleneksel bir web hosting paketleri sunucusunda çerez‑tabanlı oturum yönetimi daha pratik olabilir.

Gerçek Dünya Senaryosu: JWT ile Mikro Servis Güvenliği

Bir e‑ticaret platformu düşünün: kullanıcı‑servisi, sipariş‑servisi ve ödeme‑servisi ayrı mikro servisler olarak çalışıyor. Kullanıcı giriş yaptığında kullanıcı‑servisi bir JWT oluşturur ve Authorization: Bearer başlığıyla diğer servislere gönderir. Her servis token’ı doğruladıktan sonra role claim’i sayesinde erişim kontrolü yapar. Bu yapı, yük dengeleme ve autoscaling ortamlarında sunucuya ekstra oturum yönetimi yükü getirmez.

Bu senaryoda, token süresi 15 dakikaya ayarlanır ve refresh token AMD Ryzen VDS sunucular üzerinde güvenli bir veritabanında saklanır. Eğer bir saldırgan token çalsa bile, kısa ömür ve sık yenileme sayesinde zararı sınırlı kalır. Ayrıca, servisler arasında RS256 gibi asimetrik imzalama kullanmak, gizli anahtarın sadece kullanıcı‑serviside tutulmasını sağlar; diğer servisler sadece açık anahtarıyla doğrulama yapar.

JWT ile İlgili Sıkça Sorulan Sorular

JWT ve Refresh Token arasındaki fark nedir?

Refresh token, erişim token’ının (JWT) süresi dolduğunda yeni bir erişim token’ı almak için kullanılan uzun ömürlü bir token’dır. Refresh token genellikle HTTP‑only çerezde saklanır ve sunucu tarafında daha sıkı güvenlik kontrolleri uygulanır.

JWT’yi hangi algoritmalarla imzalamalıyım?

Güvenli bir uygulama için HS256 (HMAC SHA‑256) veya RS256 (RSA SHA‑256) tercih edilmelidir. Algoritma seçimi, gizli anahtar yönetimi stratejinize bağlıdır; asimetrik imzalama (RS256) özellikle mikro servislerde anahtar dağıtımını kolaylaştırır.

Token çalındığında ne yapmalıyım?

Çalınan token’ı geçersiz kılmak için bir “token revocation list” (revocation list) tutabilirsiniz. Ayrıca, kısa ömürlü token ve sık refresh mekanizması sayesinde çalınan token’ın etkisini en aza indirebilirsiniz.

JWT payload’da şifreli veri saklayabilir miyim?

JWT sadece imzalanır, şifrelenmez. Hassas veri saklamak için JWE (JSON Web Encryption) gibi ek standartlar kullanılmalı ya da veri tamamen sunucu tarafında tutulmalıdır.

JWT’yi Projenize Entegre Etmek İçin Son Adımlar

Artık JWT’nin temellerini, güvenli kullanım ilkelerini ve gerçek dünya örneklerini öğrendiniz. Entegrasyon sürecinde aşağıdaki adımları izleyin:

  1. Gizli anahtarınızı .env dosyasında tanımlayın ve sürüm kontrolünden çıkarın.
  2. Header’da alg olarak sadece HS256 veya RS256 seçin.
  3. Payload’da exp claim’ini 15‑30 dakika aralığında tutun, iat ve nbf claim’lerini ekleyin.
  4. Refresh token mekanizması kurun; token süresi dolduğunda yeni bir JWT üretin.
  5. İstemci tarafında token’ı Authorization: Bearer başlığıyla gönderin.
  6. Sunucu tarafında token doğrulama ve yetkilendirme middleware’lerini yapılandırın.
  7. Güvenlik testlerini (penetrasyon testi, token revocation testi) düzenli olarak yapın.

Bu adımları tamamladıktan sonra, uygulamanız ölçeklenebilir, performanslı ve güvenli bir kimlik doğrulama altyapısına sahip olacaktır. İhtiyacınız olursa, fiziksel sunucu (dedicated server) veya colocation hizmeti gibi altyapı seçenekleriyle performansı daha da artırabilirsiniz.

Sonuç

JWT, modern web ve mobil uygulamalarda kimlik doğrulama ve yetkilendirme için güçlü bir çözümdür. Doğru yapılandırma, kısa token ömrü, asimetrik imzalama ve refresh token stratejileriyle güvenlik risklerini en aza indirebilirsiniz. Yukarıdaki adımları ve önerileri uygulayarak, projelerinizde JWT’yi sorunsuz bir şekilde entegre edebilir ve ölçeklenebilir bir mimari elde edebilirsiniz. Şimdi, geliştirme ortamınızda bir deneme tokenı oluşturarak başlayın ve güvenliğinizi bir adım öteye taşıyın.