Blog

JWT Nedir ve Nasıl Çalışır? Yeni Başlayanlar İçin Kapsamlı Rehber

JWT'nin (JSON Web Token) ne olduğunu, nasıl çalıştığını, hangi bölümlerden oluştuğunu ve modern web uygulamalarında kimlik doğrulama için neden kullanıldığını öğrenin.

Header, Payload ve Signature bölümlerini gösteren JWT yapısının görseli.

JWT Nedir ve Nasıl Çalışır?

Modern web uygulamaları geliştiriyorsanız, büyük ihtimalle JWT veya JSON Web Token terimini duymuşsunuzdur. JWT, istemci ile sunucu arasında güvenli bir şekilde bilgi aktarmanın en yaygın yöntemlerinden biridir. Kimlik doğrulama (Authentication), yetkilendirme (Authorization) ve API güvenliği için yaygın olarak kullanılır.

Bu rehberde JWT'nin ne olduğunu, nasıl çalıştığını, hangi bölümlerden oluştuğunu ve neden modern web geliştirmede standart hâline geldiğini öğreneceksiniz.


JWT Nedir?

JWT (JSON Web Token), bilgileri kompakt bir JSON nesnesi olarak güvenli şekilde iletmek için kullanılan açık bir standarttır (RFC 7519).

Her JWT dijital olarak imzalanır, böylece alıcı token'ın değiştirilmediğini doğrulayabilir.

Geleneksel oturum tabanlı kimlik doğrulamanın aksine JWT, kullanıcı bilgilerini sunucuda değil, doğrudan token içinde saklar.


JWT'nin Yapısı

Bir JWT, nokta ile ayrılmış üç bölümden oluşur.

xxxxx.yyyyy.zzzzz

1. Header

Header, token türü ve kullanılan imzalama algoritması hakkında bilgi içerir.

Örnek:

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

Header daha sonra Base64Url formatında kodlanır.


2. Payload

Payload, kullanıcı bilgilerini (claims) içerir.

Örnek:

{
"userId": 15,
"email": "john@example.com",
"role": "admin"
}

Payload içerisinde şunlar bulunabilir:

  • Kullanıcı ID'si
  • Kullanıcı adı
  • E-posta adresi
  • Rol
  • Yetkiler
  • Son kullanma tarihi

Payload şifrelenmez. Token'a sahip olan herkes içeriğini okuyabilir.


3. Signature

Signature, token'ın değiştirilmediğini doğrulamak için kullanılır.

Aşağıdaki şekilde oluşturulur:

HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload),
secret
)

Gizli anahtar yalnızca sunucu tarafından bilinir.


JWT Nasıl Çalışır?

Tipik kimlik doğrulama süreci şu şekildedir:

  1. Kullanıcı giriş yapar.
  2. Sunucu bilgileri doğrular.
  3. Sunucu bir JWT oluşturur.
  4. Token istemciye gönderilir.
  5. İstemci JWT'yi saklar.
  6. Sonraki tüm isteklerde token sunucuya gönderilir.
  7. Sunucu imzayı doğrular.
  8. Token geçerliyse erişime izin verilir.

Bu yöntem sayesinde sunucuda oturum bilgisi saklamaya gerek kalmaz.


JWT Nerelerde Kullanılır?

JWT aşağıdaki alanlarda yaygın olarak kullanılır:

  • Kullanıcı kimlik doğrulama
  • REST API'leri
  • React, Vue ve Angular uygulamaları
  • Mobil uygulamalar
  • OAuth 2.0
  • Mikroservis mimarileri
  • API Gateway çözümleri

JWT'nin Avantajları

JWT'nin önemli avantajları şunlardır:

  • Stateless kimlik doğrulama
  • Küçük token boyutu
  • Hızlı doğrulama
  • Birden fazla servis arasında kolay kullanım
  • Mobil uygulamalar için ideal
  • Kolay ölçeklenebilir

JWT mi, Session mı?

JWT Session
İstemcide saklanır Sunucuda saklanır
Stateless Stateful
API'ler için idealdir Klasik web siteleri için uygundur
Kolay ölçeklenebilir Session depolaması gerektirir

Her iki yaklaşım da uygulamanın ihtiyaçlarına göre tercih edilebilir.


JWT Güvenli midir?

Evet, doğru şekilde uygulanırsa oldukça güvenlidir.

En iyi uygulamalar:

  • HTTPS kullanın.
  • Token için son kullanma tarihi belirleyin.
  • Payload içinde hassas veri saklamayın.
  • Güvenli imzalama algoritmaları kullanın.
  • Gizli anahtarları düzenli olarak değiştirin.
  • Her istekte token imzasını doğrulayın.

Yaygın Hatalar

Yeni başlayanların yaptığı yaygın hatalar:

  • Şifreleri JWT içinde saklamak
  • Son kullanma tarihi eklememek
  • İmzayı doğrulamamak
  • Zayıf gizli anahtar kullanmak
  • Token'ı HTTP üzerinden göndermek

JWT Örneği

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJ1c2VySWQiOjE1LCJyb2xlIjoiYWRtaW4ifQ.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

Bu metin rastgele görünse de aslında Header, Payload ve Signature bölümlerinden oluşur.


Sonuç

JWT, günümüz web geliştirme dünyasında en yaygın kullanılan kimlik doğrulama teknolojilerinden biridir. Sunucuda oturum saklamadan istemci ile sunucu arasında güvenli bilgi paylaşımı sağlar.

REST API, mobil uygulama veya SPA geliştiriyorsanız JWT'nin çalışma mantığını bilmek önemli bir beceridir. HTTPS, doğru imza doğrulaması ve güvenli yapılandırma ile birlikte kullanıldığında JWT güçlü, güvenli ve ölçeklenebilir bir kimlik doğrulama çözümü sunar.