Ana Sayfa/Blog/JWT Token Nedir? Kimlik Doğrulamada Nasıl Kullanılır?

JWT Token Nedir? Kimlik Doğrulamada Nasıl Kullanılır?

JWT (JSON Web Token), taraflar arasında bilgi güvenli bir şekilde JSON nesnesi olarak iletmek için kullanılan açık bir standarttır (RFC 7519). Özellikle web uygulamalarında kimlik doğrulama (authentication) ve yetkilendirme (authorization) işlemlerinde yaygın olarak kullanılır. Geleneksel oturum (session) tabanlı kimlik doğrulamaya alternatif olarak, durumsuz (stateless) bir yaklaşım sunar.

JWT Yapısı

Bir JWT token'ı, nokta (.) ile ayrılmış üç bölümden oluşur:

xxxxx.yyyyy.zzzzz
header.payload.signature

Gerçek bir JWT token'ı şöyle görünür:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwiaXNpbSI6IkFsaSIsImlhdCI6MTcxNjIzOTAyMn0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

1. Header (Başlık)

Token türünü ve imzalama algoritmasını belirler:

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

Bu JSON nesnesi Base64Url ile kodlanarak header bölümünü oluşturur.

2. Payload (Yük)

Token'ın taşıdığı verileri (claims) içerir. Üç tür claim vardır:

{
  // Kayıtlı (registered) claims
  "iss": "sitescripti.com",    // Issuer: token'ı veren
  "sub": "user123",            // Subject: token'ın konusu
  "aud": "api.sitescripti.com",// Audience: hedef kitle
  "exp": 1716325422,           // Expiration: son kullanma zamanı
  "iat": 1716239022,           // Issued At: oluşturulma zamanı
  "nbf": 1716239022,           // Not Before: geçerlilik başlangıcı

  // Özel (custom) claims
  "isim": "Ali Yılmaz",
  "rol": "admin",
  "email": "[email protected]"
}

Uyarı: Payload Base64Url ile kodlanmıştır, şifrelenmemiştir. Herkes payload içeriğini okuyabilir. Bu nedenle hassas bilgileri (şifre, kredi kartı) payload'a asla koymayın.

3. Signature (İmza)

Token'ın değiştirilmediğini doğrulamak için kullanılır:

HMACSHA256(
  base64UrlEncode(header) + "." + base64UrlEncode(payload),
  gizli-anahtar
)

İmza, header ve payload'ın birleştirilip gizli anahtar ile hashlenmesiyle oluşturulur. Token'da herhangi bir değişiklik yapılırsa imza geçersiz olur.

İmzalama Algoritmaları

JWT Kimlik Doğrulama Akışı

  1. Giriş: Kullanıcı, kullanıcı adı ve şifresini sunucuya gönderir.
  2. Doğrulama: Sunucu kimlik bilgilerini doğrular.
  3. Token oluşturma: Sunucu, kullanıcı bilgilerini içeren bir JWT oluşturur ve istemciye döner.
  4. Token saklama: İstemci, token'ı (genellikle localStorage veya httpOnly cookie'de) saklar.
  5. İstekler: Her API isteğinde token, Authorization başlığında gönderilir.
  6. Doğrulama: Sunucu, token'ın imzasını ve geçerliliğini kontrol eder.
// İstemciden sunucuya gönderim
fetch('/api/profil', {
  headers: {
    'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIs...'
  }
});

Güvenlik En İyi Uygulamaları

JWT ve Session Karşılaştırması

JWT Araçlarını Kullanın

JWT token'larını analiz etmek ve içeriğini görüntülemek için JWT Decoder aracımızı kullanabilirsiniz. Test amaçlı token oluşturmak için ise JWT Oluşturucu aracımız mevcuttur.

Bu konuyla ilgili araçlarımızı da deneyin: JSON Formatter, cURL Builder, ENV Generator

← Tüm Yazılar