JWT (JSON Web Token): Güvenli Kullanıcı Girişi ve Yetkilendirme

crazy_coder

Moderatör
Katılım
20 Şub 2026
Mesajlar
204
Tepkime puanı
0
Puanları
16

1. JWT Nedir ve Nasıl Çalışır?​


JWT, taraflar arasında güvenli bir şekilde JSON objesi aktarılmasını sağlayan bir standarttır. Çalışma mantığı bir pasaporta benzer:

Kullanıcı adı ve şifresiyle giriş yapar.

Sunucu bilgileri doğrular ve kullanıcıya özel, dijital imzalı bir token üretip gönderir.

Kullanıcı, sonraki her isteğinde bu token'ı yanında taşır (genellikle HTTP Header içinde).

Sunucu token'ı kontrol eder; imza doğruysa işlemi onaylar.

2. JWT'nin Anatomisi (Üç Parça)​


Bir JWT jetonu, birbirine nokta (.) ile bağlanmış üç farklı Base64 formatlı parçadan oluşur:


  • []Header (Başlık): Jetonun tipi ve kullanılan şifreleme algoritması (örn: HMAC SHA256).
    []Payload (Yük): Kullanıcının ID'si, adı veya yetkileri gibi veriler. (Hassas bilgiler buraya konulmamalıdır çünkü kolayca çözülebilir).
  • Signature (İmza): İlk iki parçanın sunucudaki "Gizli Anahtar" (Secret Key) ile birleştirilip şifrelenmiş halidir. Jetonun yolda değiştirilmediğini garanti eder.

3. Node.js ve jsonwebtoken Kütüphanesi​


Projenizde JWT kullanmak için en yaygın kütüphane jsonwebtoken'dır.

Kurulum:
Bash:
npm install jsonwebtoken

Token Oluşturma (Sign):
JavaScript:
const jwt = require('jsonwebtoken');

const kullanici = { id: 123, ad: "Can", rol: "admin" };
const SECRET_KEY = "aslinda_cok_gizli_bir_anahtar";

// 1 saat geçerli bir token oluştur
const token = jwt.sign(kullanici, SECRET_KEY, { expiresIn: '1h' });
console.log("Oluşturulan Jeton:", token);

Token Doğrulama (Verify):
JavaScript:
try {
const dogrulanmişVeri = jwt.verify(token, SECRET_KEY);
console.log("Kullanıcı Bilgileri:", dogrulanmişVeri);
} catch (err) {
console.log("Geçersiz veya süresi dolmuş jeton!");
}

4. JWT Neden Tercih Edilir?​


ÖzellikGeleneksel SessionJWT (Token)
DepolamaSunucu hafızasında (RAM) tutulur.İstemcide (Browser/Mobil) tutulur.
ÖlçeklenebilirlikZordur (Her sunucu session'ı bilmeli).Kolaydır (Her sunucu imza kontrolü yapabilir).
Mobil UyumlulukCookie yönetimi zordur.Kusursuz çalışır.

5. Güvenlik Uyarısı: Secret Key ve Payload​


JWT kullanırken iki altın kural vardır:

Secret Key'inizi asla ama asla GitHub gibi yerlerde paylaşmayın. Bu anahtarı ele geçiren herkes sahte jetonlar üretebilir.

Payload kısmına şifre gibi gizli bilgileri koymayın. Base64 formatı bir şifreleme değil, kodlama yöntemidir; herkes içini okuyabilir.



Sonuç

JWT, modern web mimarilerinin (özellikle Mikroservisler ve Single Page Applicationlar) kalbidir. Sunucuyu yormadan, güvenli ve hızlı bir yetkilendirme sağlar. Doğru yapılandırıldığında, uygulamanızın güvenliğini profesyonel bir seviyeye taşır.
 
Geri
Üst