COMPUTER ENGINEER

Örneklere git
Blog
Next.js / ASP.NET Core / SQL6 dk çalışma
23/ 41

Kimlik ve güvenlik

JWT: taşıyıcı token ve doğrulama

JWT imzalıdır, şifreli değildir. Neyin kontrol edilmesi gerektiğini bilmek her şeydir.

AnlaÖrneği inceleKendin uygula

Kavramı anlayalım

JSON Web Token üç parçadan oluşur: header, payload ve imza; her biri Base64URL ile kodlanıp noktalarla birleştirilir. Payload’daki claim’ler (kullanıcı kimliği, rol, son geçerlilik zamanı) herkes tarafından okunabilir; imza yalnızca değiştirilmediklerini kanıtlar. Bu yüzden JWT içine parola veya kişisel hassas veri konmaz.

Sunucu token’ı kabul etmeden önce şunları doğrular: imza beklenen anahtar ve algoritmayla mı atılmış, issuer ve audience beklenen değerler mi, token’ın süresi (exp) dolmuş mu. Algoritmayı token’ın kendisinin belirlemesine izin vermek tarihsel olarak ciddi açıklara yol açtı; kabul edilen algoritma sunucu tarafında sabitlenir.

JWT’nin zayıf yanı iptaldir: imzalı bir token, süresi dolana kadar geçerlidir. Bu yüzden ömürleri kısa tutulur ve gerektiğinde ek kontroller yapılır. Bu projede her JWT doğrulamasında kullanıcının güvenlik damgası (security stamp) da kontrol edilir; çıkış yapınca damga değişir ve eski token’lar geçersiz olur.

NERESİNDE KULLANIRSIN?

Eksik bir doğrulama adımı, herkesin kendi token’ını üretebilmesi demektir.

SIK YAPILAN HATA

Token’ı yalnız Base64 çözüp claim’lere bakmak ve imzayı doğrulamamak.

CANLI ANİMASYON

Bir mektubun şehirdeki yolculuğu

İsteği bir mektup, sunucuyu bir şehir gibi düşün. Senaryo seç, oynat ve mektubun hangi kapıdan geçip nerede durdurulduğunu izle.

İSTEMCİKENARWEB SUNUCUSUAPI · ASP.NET COREVERİTarayıcıKullanıcının ekranıAğDNS · TCP · TLSTers vekilTLS sonlandırma, sıkıştırmaNext.js sunucusuSSR ve route handlerKestrelHTTP sunucusuHata yakalayıcıMiddlewareRoutingEndpoint seçimiHız sınırıMiddlewareKimlik doğrulamaKim olduğunYetkilendirmeNeye izin varModel bindingHTTP → C# + doğrulamaControllerEndpoint koduServisİş kuralları (DI)RedisDağıtık önbellekEF CoreLINQ → SQLSQL ServerSorgu planı, indeks
GİDİŞ →

Giriş formunu gönderdin. Parolan şifreli tünelin içinde gidiyor, adres çubuğunda görünmüyor.

TarayıcıSenin ekranın. İsteği yazan ve sonunda cevabı sayfaya çeviren yer.
1 / 12
01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

Temsili örnek
eyJhbGciOiJIUzI1NiJ9 . eyJzdWIiOiI3YzFlIiwicm9sZSI6IkFkbWluIiwiZXhwIjoxNzkxMzgwMDAwfQ . 4kd…
     header                         payload (herkes okuyabilir)                         imza

Payload şifreli değildir; yalnız imzayla korunur.

Bu sayfa gerçek bir sunucuya veya veritabanına bağlanmaz. Kod örnekleri .NET 8, Next.js ve SQL Server için temsilîdir; süreler simülasyondaki örnek değerlerdir, ölçüm değildir. Örnekleri yalnız kendi geliştirme ortamında dene; gerçek bağlantı dizesi, token veya parola paylaşma.

02 / SIRA SENDE

Önce kendin dene.

Bir saldırgan payload’daki rolü ‘User’dan ‘Admin’e değiştirip token’ı geri kodluyor ve gönderiyor. Doğru yapılandırılmış bir API ne yapar?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
İmza artık payload ile eşleşmez → doğrulama başarısız → 401.
Saldırgan anahtarı bilmeden geçerli imza üretemez.
(alg: "none" denemesi de ValidAlgorithms ile reddedilir.)

JWT’nin güvenliği payload’ın gizliliğinden değil, imzanın doğrulanmasından gelir.