Ana Sayfa/Teknolojiler/JWT Token Nedir? Modern Kimlik Doğrulama ve Yetkilendirme Rehberi
Teknolojiler

JWT Token Nedir? Modern Kimlik Doğrulama ve Yetkilendirme Rehberi

JWT token, modern web ve mobil uygulamalarda oturumsuz kimlik doğrulama ve yetkilendirme sağlayan popüler bir yöntemdir. Bu rehberde JWT'nin yapısı, avantajları, klasik oturumlarla farkları, güvenlik ipuçları ve en iyi kullanım alanları detaylı şekilde açıklanıyor.

10 Nis 2026
8 dk
JWT Token Nedir? Modern Kimlik Doğrulama ve Yetkilendirme Rehberi

JWT token, modern web uygulamalarında en popüler yetkilendirme yöntemlerinden biridir. JWT token özellikle API'lerde, mobil uygulamalarda ve mikroservis mimarili servislerde yaygın olarak kullanılır çünkü sunucuda oturum saklamadan kimlik doğrulama sağlar.

Önceden, sunucunun her kullanıcıyı (oturumlar yoluyla) hatırlaması gerekirdi. JWT token ile tüm bilgiler her istekte birlikte iletilir. Bu, sistemi daha hızlı, daha ölçeklenebilir ve dağıtık servisler için daha uygun hale getirir.

Bu makalede JWT token nedir, nasıl çalışır, yapısı nasıldır ve klasik oturumlardan farkı nedir, detaylıca inceleyeceğiz.

JWT token nedir? Basitçe açıklama

JWT token, kullanıcı hakkında bilgi saklayan ve sunucuda veri tutmadan kimlik doğrulama için kullanılan özel bir karakter dizisidir. JWT, "JSON Web Token" anlamına gelir.

Biraz daha basitleştirirsek, sisteme giriş yaptıktan sonra aldığınız "dijital geçiş kartı"dır. Sunucu, kullanıcıyı her seferinde veritabanından kontrol etmek yerine, sadece bu token'a bakıp kim olduğunuzu ve izinlerinizi anlar.

JWT, modern web ve mobil uygulamalarda, API'lerde şu gibi alanlarda kullanılır:

  • Siteye girişte
  • Uygulama üzerinden yetkilendirmede
  • REST API ile çalışırken

JWT'nin temel fikri: Tüm bilgiler token'ın içinde saklanır, sunucuda değil. Bu sayede sistem hızlı ve kolayca ölçeklenebilir olur.

Token genellikle noktalarla ayrılmış uzun bir karakter dizisi şeklindedir, örneğin:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

Rastgele bir karakter dizisi gibi görünse de, içinde şu bilgiler yer alır:

  • Kullanıcı bilgileri (ID, rol)
  • Süresi (geçerlilik)
  • Sahteciliğe karşı koruyan imza

Unutmayın: JWT verileri şifrelemez, sadece kodlar. Yani içeriği okunabilir, fakat imza bozulmadan değiştirilemez.

JWT, oturum saklamadan yetkilendirme sağladığı için popülerdir. Sunucu, kullanıcı durumu tutmaz; tüm bilgiler token'ın içindedir.

JWT token nasıl çalışır?

JWT token işleyişi, sunucunun bir defa token vermesi ve sonraki isteklere sadece bu token'ı kontrol etmesi (kullanıcı durumu saklamadan) üzerine kurulur.

Adım adım JWT işlemi

  1. Kullanıcı giriş bilgilerini (kullanıcı adı/parola) girer ve sunucuya gönderir.
  2. Sunucu, bilgileri (ör: veritabanı ile) doğrular.
  3. Bilgiler doğruysa, sunucu bir JWT token oluşturur. İçinde:
    • Kullanıcı ID'si
    • Rol (ör: user veya admin)
    • Geçerlilik süresi (expiration time)
  4. Token, istemciye (tarayıcı veya uygulama) gönderilir.
  5. Token, aşağıdaki yerlerde saklanabilir:
    • localStorage
    • sessionStorage
    • Cookie (genellikle HttpOnly, güvenlik için önerilir)
  6. Kullanıcı, sonraki tüm istekleri bu token ile gönderir. Genelde şu başlıkta:
Authorization: Bearer <token>
  1. Sunucu isteği aldığında:
    • Token'ı çıkarır
    • İmzasını kontrol eder
    • Süresini kontrol eder
    • Payload'dan verileri okur
  2. Her şey geçerliyse, kullanıcı yetkilendirilmiş kabul edilir ve işlem devam eder.

Sunucu, istekler arasında hiçbir kullanıcı bilgisi saklamaz. Gerekli tüm bilgiler token'ın içindedir. Bu nedenle JWT'ye stateless (durumsuz) yaklaşım denir.

JWT özellikle şu durumlar için idealdir:

  • API'lar
  • Mikroservisler
  • Dağıtık sistemler

JWT genellikle OAuth ile birlikte de kullanılır. Detaylar için OAuth 2.0 nasıl çalışır? Şifre olmadan giriş ve veri güvenliği başlıklı yazımıza göz atabilirsiniz.

JWT token'ın yapısı

Bir JWT token üç parçadan oluşur ve noktalarla ayrılır:

header.payload.signature

Her parça Base64 ile kodlanır, bu yüzden dışarıdan anlamsız bir karakter dizisi gibi görünür, ama içeriği okunabilir yapıdadır.

1. Header (Başlık)

Token tipi ve imza algoritması bilgisini içerir.

{
  "alg": "HS256",
  "typ": "JWT"
}
  • alg - imza algoritması (ör: HMAC SHA-256)
  • typ - token tipi

2. Payload (Yük)

Token'ın ana bölümüdür; kullanıcı bilgileri burada saklanır.

{
  "userId": 123,
  "role": "admin",
  "exp": 1712345678
}
  • Kullanıcı verileri
  • Erişim hakları
  • Geçerlilik süresi (exp)
  • Oluşturulma zamanı (iat)

Not: Payload şifreli değildir, sadece kodlanmıştır. Yani herkes içeriği okuyabilir.

3. Signature (İmza)

Token'ın en önemli bölümüdür, sahteciliğe karşı korur.

  • Header
  • Payload
  • Sunucudaki gizli anahtar ile oluşturulur

Birisi token içeriğini değiştirmeye çalışırsa, imza geçersiz olur ve sunucu isteği reddeder.

Sonuç olarak JWT, sadece bir karakter dizisi değil; veriyi ve güvenliği kendi içinde barındıran bağımsız bir kapsayıcıdır. Sunucu, kiminle konuştuğunu anlamak için veritabanına başvurmaz; tüm bilgiler token'da mevcuttur.

JWT ile kimlik doğrulama ve yetkilendirme arasındaki fark

JWT kullanırken genellikle iki terim karıştırılır: kimlik doğrulama ve yetkilendirme. Bunlar ilişkili ama farklı işlemlerdir.

Kimlik doğrulama nedir?

Kullanıcının kim olduğunu doğrulama sürecidir. Sistem "Sen kimsin?" sorusunu yanıtlar.

  • Kullanıcı giriş bilgilerini girer
  • Sunucu bilgileri kontrol eder
  • Her şey doğruysa kullanıcı doğrulanır

Genellikle bu aşamada JWT token oluşturulur.

Yetkilendirme nedir?

Yetkilendirme bir sonraki adımdır. Sistem, "Ne yapabilirsin?" sorusuna cevap verir. Örneğin:

  • Normal kullanıcı verileri okuyabilir
  • Yönetici verileri değiştirebilir

Bu bilgiler genellikle JWT token'ın payload bölümünde (ör: role alanı) saklanır.

JWT bu süreçlerde nasıl rol alır?

  1. Kullanıcı kimlik doğrulama adımını tamamlar (giriş yapar)
  2. Sunucu JWT token üretir
  3. Token'da erişim hakları yazılıdır
  4. Her istekte sunucu, token'dan yetkilendirme yapar

Yani JWT hem kimlik doğrulama sonucunu saklar hem de erişim haklarını içerir.

Önemli: JWT, kendi başına kimlik doğrulama yapmaz; sadece doğrulamanın sonucunu taşır.

JWT ile oturumlar arasındaki farklar

JWT'nin değerini anlamak için klasik oturum (session) yaklaşımıyla karşılaştırmak gerekir.

Klasik oturumlar nasıl çalışır?

  • Kullanıcı giriş yaptıktan sonra, sunucu bellekte veya veritabanında bir kayıt (session) oluşturur
  • Kullanıcıya bir session ID verir ve bunu cookie içinde gönderir
  • Her istekle birlikte, tarayıcı session ID'yi sunucuya yollar
  • Sunucu, oturum verisinden kim olduğunu belirler

Yani sunucu kullanıcı durumunu saklar.

JWT ile nasıl çalışır?

  • Sunucu, kullanıcı bilgileriyle bir token oluşturur
  • Token'ı istemciye gönderir
  • İstemci token'ı saklar
  • Her istekte token'ı iletir

Sunucu veritabanına bakmaz, token'ı kontrol eder.

Ana farklar

  1. Veri Saklama
    • Oturumlar: Sunucuda
    • JWT: Token'ın içinde
  2. Ölçeklenebilirlik
    • Oturumlar: Zor (ortak depolama gerektirir)
    • JWT: Kolay (sunucular birbirinden bağımsız)
  3. Performans
    • Oturumlar: Her seferinde veritabanı/mem'e erişim
    • JWT: Sadece imza kontrolü
  4. Güvenlik
    • Oturumlar: Sunucuda geçersiz kılınabilir
    • JWT: Token verildikten sonra iptal etmek zordur

JWT ne zaman tercih edilmeli?

  • API ve mikroservisler
  • Mobil uygulamalar
  • Dağıtık sistemler
  • Dış servislerle yetkilendirme

Oturumlar ne zaman daha iyi?

  • Basit siteler
  • Sunucu taraflı render (SSR)
  • Sıkı oturum kontrolü gerektiğinde
  • Hızlı erişim iptali gerekiyorsa

Sonuç: JWT, esneklik ve ölçeklenebilirlik için; oturumlar ise kontrol ve yönetim kolaylığı için uygundur.

Access Token ve Refresh Token: Birlikte nasıl çalışır?

Gerçek uygulamalarda, JWT genellikle tek başına kullanılmaz. Bunun yerine, iki token'lı bir yapı tercih edilir: access token ve refresh token.

Bu, güvenlik ile kullanım kolaylığı arasındaki dengeyi sağlar.

Access Token

  • Kısa ömürlüdür (genellikle 5-30 dakika)
  • Her istekte gönderilir
  • Kullanıcı bilgilerini içerir

Çalınırsa, saldırgan sadece kısa süreli erişim elde edebilir.

Refresh Token

  • Daha uzun yaşar (günler veya haftalar)
  • Normal isteklerde kullanılmaz
  • Daha güvenli saklanır (çoğunlukla HttpOnly cookie'de)

Birlikte nasıl çalışırlar?

  1. Kullanıcı giriş yapar
  2. Sunucu:
    • access token
    • refresh token
    oluşturur ve gönderir
  3. Kullanıcı, access token ile istek yapar
  4. Access token süresi biterse:
    • İstemci refresh token ile sunucuya yeni access token ister
    • Sunucu kontrol edip yeni access token verir
  5. Kullanıcı tekrar giriş yapmadan çalışmaya devam eder

Neden sadece bir JWT kullanılamaz? Eğer token uzun ömürlü olursa kullanışlıdır, ancak sızıntı riski büyüktür. Kısa olursa güvenlidir, ama kullanıcı sık sık çıkış yapar. İkili yapı (access + refresh token) bu dengeyi kurar.

Güvenlik için önemli noktalar

  • Refresh token genellikle HttpOnly cookie'de saklanır
  • JavaScript ile erişilemez
  • XSS saldırılarına karşı korur

Bu yaklaşım neredeyse tüm modern yetkilendirme sistemlerinde kullanılır.

JWT token'larının güvenliği

JWT güvenli bir mekanizmadır, ancak doğru kullanılırsa. Yanlış uygulamalar ciddi güvenlik açıklarına yol açar.

Neden JWT taklit edilemez?

JWT'nin ana koruması imza (signature)dır. Sunucu, token'ı gizli anahtarıyla imzalar ve istemci bu anahtarı bilmez. Her istekte sunucu imzayı yeniden hesaplar ve karşılaştırır; veri değiştirilirse imza uyuşmaz ve erişim reddedilir.

En büyük risk: Token'ın çalınması

JWT tahmin edilemez, fakat çalınabilir. Bir saldırgan token'ı ele geçirirse, kullanıcı adına istek gönderebilir, verilere erişebilir ve sunucu bunu ayırt edemez.

JWT güvenli nasıl saklanır?

  1. localStorage
    • Kullanımı kolaydır
    • Ancak XSS saldırılarına açıktır
  2. sessionStorage
    • Biraz daha güvenli
    • Yine de JavaScript ile erişilebilir
  3. HttpOnly cookie (en güvenli seçenek)
    • JavaScript'ten erişilemez
    • XSS'ye karşı korur
    • Tarayıcı tarafından otomatik iletilebilir

Yaygın acemi hataları

  1. Çok uzun token ömrü - Haftalarca geçerli token risklidir
  2. Hassas verilerin saklanması - JWT'ye parola, kişisel veya gizli bilgi eklenmemelidir
  3. HTTPS kullanılmaması - Token'ın HTTP ile iletilmesi neredeyse kesin sızıntı demektir
  4. İptal (revoke) mekanizmasının olmaması - JWT kolayca iptal edilemez, bu yüzden kısa süreli token ve refresh token kullanılmalıdır

Güvenlik özeti

  • HTTPS zorunlu
  • Kısa ömürlü token'lar
  • Access + Refresh token kombinasyonu
  • Token içindeki bilgiler minimumda tutulmalı

JWT ne zaman kullanılmalı?

JWT güçlü bir araçtır, fakat her proje için en iyi çözüm değildir. Gerçek avantaj sağlayacağı alanları iyi belirlemek gerekir.

JWT için ideal kullanım alanları

  1. SPA uygulamaları (Single Page Application)
    • React, Vue, Angular gibi ayrık frontend-backend yapılarında
    • Çok sayıda API isteği gönderiliyorsa
    • Klasik oturum tutulmuyorsa

    JWT burada idealdir çünkü:

    • Sunucu durumu tutmaz
    • Her istekte kolayca iletilebilir
  2. Mobil uygulamalar
    • iOS ve Android uygulamalarında, tarayıcıdaki gibi standart cookie yoktur
    • Basit bir yetkilendirme mekanizmasına ihtiyaç vardır

    JWT, cihazda saklanıp her istekte gönderilebilir.

  3. API ve mikroservisler
    • Çok sayıda servis ve dağıtık yapı varsa
    • Ortak oturum sunucusu yoksa

    JWT, durum saklamadan kolayca kimlik kontrolü sağlar.

  4. Dış servislerle yetkilendirme
    • Google ile giriş
    • Sosyal ağlarla giriş

    Bu senaryolarda genellikle OAuth ile birlikte JWT kullanılır. Daha fazla bilgi için OAuth 2.0 nedir? Güvenli giriş ve veri koruması başlıklı yazımıza bakabilirsiniz.

JWT'nin uygun olmadığı durumlar

  1. Basit siteler: Küçük projelerde ve sunucu taraflı render'da oturum kullanmak daha kolay ve güvenlidir.
  2. Hızlı erişim iptali gerektiğinde: JWT'yi anında iptal etmek zordur. Kullanıcıyı hızlıca çıkış yaptırmak veya oturumları kontrol etmek önemliyse, klasik oturumlar tercih edilmelidir.
  3. Yüksek güvenlik gerektiren sistemler: Bankacılık veya kurumsal servislerde, her oturumun yönetimi ve tam kontrol gerekirse JWT esnekliği yetersiz kalabilir.

Temel mesaj

JWT ölçeklenebilir sistemler, API'ler ve frontend uygulamaları için bir araçtır. Ancak her proje için uygun değildir; her zaman en iyi çözüm olmayabilir.

Sonuç

JWT token, sunucuda oturum saklamadan kimlik doğrulama ve yetkilendirme sağlayan modern bir yöntemdir. Tüm gerekli bilgileri kendi içinde taşır ve imza ile doğrulanır - bu da sistemi hızlı ve ölçeklenebilir yapar.

Bu yazıda şunları inceledik:

  • JWT token nedir ve nasıl çalışır?
  • Oturumsuz yetkilendirme nasıl yapılır?
  • JWT'nin klasik oturumlardan farkları nelerdir?
  • Access ve refresh token'lar nasıl çalışır?
  • Riskler nelerdir ve nasıl önlenir?

Pratikte, JWT API'ler, mobil uygulamalar ve mikroservisler için müthiş bir çözümdür; ancak basit projelerde gereksiz olabilir.

Kısacası: JWT kolaylık ve ölçeklenebilirlik, oturumlar ise kontrol ve yönetim kolaylığı sunar. Seçim, ihtiyaçlarınıza, mimarinize ve güvenlik gereksinimlerinize bağlıdır.

Etiketler:

jwt
kimlik doğrulama
yetkilendirme
access token
refresh token
api
mikroservis
güvenlik

Benzer Makaleler