JWT Nedir?

Makale

JWT, JSON Web Token'ın kısaltmasıdır. Taraflar arasında bilgiyi JSON nesnesi olarak güvenle iletmek için kullanılan kompakt, URL güvenli bir token formatıdır. Bilgi dijital olarak imzalandığından doğrulanabilir ve güvenilir olur. JWT'ler en çok web ve mobil uygulamalarında kimlik doğrulama ve yetkilendirme için kullanılır.

Bir JWT token'ını incelemek veya çözümlemek mi istiyorsunuz?

JWT Çözücüyü Aç →

Tarihçe

JWT, IETF (İnternet Mühendisliği Görev Gücü) tarafından önerilmiş ve Mayıs 2015'te RFC 7519 olarak standartlaştırılmıştır. Daha geniş JSON Nesne İmzalama ve Şifreleme (JOSE) çerçevesinin bir parçası olarak geliştirilmiştir. JWT, birçok web bağlamında SAML token'ları gibi daha ağır XML tabanlı alternatiflerin yerini alarak REST API'leri ve tek sayfalık uygulamalar için baskın token formatı haline gelmiştir.

Yapı

Bir JWT, nokta ile ayrılmış üç Base64URL kodlamalı bölümden oluşur: başlık.yük.imza

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkFsaWNlIiwiaWF0IjoxNTE2MjM5MDIyfQ
.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

1. Başlık (Header)

Başlık, token türünü ve kullanılan imzalama algoritmasını belirtir:

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

2. Yük (Payload)

Yük, claim'leri içerir — kullanıcı hakkındaki ifadeler ve ek meta veriler. Standart claim'ler:

{
  "sub": "1234567890",
  "name": "Ali",
  "role": "admin",
  "iat": 1516239022,
  "exp": 1516242622
}

3. İmza (Signature)

İmza, kodlanmış başlık ve yük, gizli anahtarla (asimetrik algoritmalar için özel anahtar) imzalanarak oluşturulur. Token'ın kurcalanmadığını garanti eder:

HMACSHA256(
  base64UrlEncode(başlık) + "." + base64UrlEncode(yük),
  gizliAnahtar
)

JWT Kimlik Doğrulama Nasıl Çalışır

  1. Kullanıcı kimlik bilgileriyle giriş yapar (kullanıcı adı + şifre)
  2. Sunucu kimlik bilgilerini doğrular ve imzalı bir JWT oluşturur
  3. Sunucu JWT'yi istemciye döndürür
  4. İstemci JWT'yi saklar (genellikle bellekte veya localStorage'da)
  5. İstemci her istekte JWT'yi Authorization: Bearer <token> başlığında gönderir
  6. Sunucu imzayı doğrular ve veritabanı sorgusu olmadan claim'leri okur

İmzalama Algoritmaları

Güvenlik Kuralları

Sıkça Sorulan Sorular

JWT nedir?

JWT (JSON Web Token), taraflar arasında bilgiyi JSON nesnesi olarak güvenle iletmek için kullanılan kompakt, URL güvenli bir token formatıdır. Bilgi dijital olarak imzalanır; bu sayede doğrulanabilir ve güvenilir olur.

JWT ne anlama gelir?

JWT, JSON Web Token'ın kısaltmasıdır. Taraflar arasında bilgiyi JSON nesnesi olarak iletmek için kompakt ve bağımsız bir yol tanımlayan açık bir standarttır (RFC 7519).

JWT ne için kullanılır?

JWT en çok kimlik doğrulama ve yetkilendirme için kullanılır. Ayrıca mikro servis mimarilerinde servisler arasında bilgi alışverişi için de kullanılır.

JWT güvenli midir?

Yük yalnızca Base64 ile kodlanmıştır, şifrelenmemiştir. İmza kurcalanmayı önler ancak gizlilik sağlamaz. JWT yüküne hassas veri koymayın ve her zaman HTTPS kullanın.

JWT ile oturum cookie'leri arasındaki fark nedir?

Oturum cookie'leri yalnızca bir oturum kimliği saklar; sunucu veritabanını sorgulamak zorundadır. JWT'ler bağımsızdır — tüm kullanıcı bilgisi token'ın içindedir, veritabanı sorgusu gerekmez. JWT'ler dağıtık sistemler için daha iyi ölçeklenir.

HS256 ile RS256 arasındaki fark nedir?

HS256, imzalama ve doğrulama için tek bir paylaşılan gizli anahtar kullanır. RS256, imzalamak için özel anahtar, doğrulamak için genel anahtar kullanır — doğrulayıcıların yeni token oluşturamaması gereken dağıtık sistemler için daha güvenlidir.

İlgili Makaleler

Kaynaklar