HMAC ile SHA-256. Paylaşılan simetrik anahtar. Genel kullanım için önerilir.
Nasıl çalışır
Bir JSON Web Token (JWT), iki taraf arasında bilgi (claim) taşıyan derli toplu, imzalı bir belirteçtir. Noktalarla ayrılmış üç bölümden oluşur —başlık, yük ve imza—, her biri Base64URL ile kodlanır.
Oluştur modunda başlığı ve yükü JSON olarak tanımlar ve gizli bir anahtarla (HMAC) veya özel bir anahtarla (RSA/ECDSA) imzalarsınız. Oku modunda mevcut bir belirteci yapıştırarak içeriğini inceler ve imzayı doğrularsınız.
Yük şifrelenmez: herkes Base64URL'yi çözerek okuyabilir. İmza yalnızca belirtecin değiştirilmediğini garanti eder, onu gizlemez. Bir JWT'ye asla hassas veri koymayın.
Örnekler
header{"alg":"HS256","typ":"JWT"} → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9payload{"sub":"1234567890","name":"John Doe","iat":1516239022} → eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQtokeneyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5cİmza (üçüncü bölüm) algoritmaya ve anahtara bağlıdır; bu örnek "your-256-bit-secret" anahtarıyla HS256 kullanır.Kullanım senaryoları
- API'lerde kullanıcıları kimlik doğrulamak: sunucu imzalı bir belirteç verir ve oturum saklamadan her istekte doğrular.
- Kimlik doğrulama belirteçlerini inceleyip hata ayıklamak; taleplerini (sub, exp, roller) ve tarihlerini görmek için.
- Bir belirtecin imzasını gizli anahtar veya açık anahtarla doğrulayarak kurcalanmadığını teyit etmek.
- Bir kimlik doğrulama akışı geliştirirken farklı algoritmalarla (HMAC, RSA, ECDSA) test belirteçleri oluşturmak.
Sık sorulan sorular
Bir JWT'nin içeriği şifreli mi?
Hayır. Başlık ve yük yalnızca Base64URL ile kodlanmıştır ve herkes bunu çözebilir. İmza gizliliği değil, bütünlüğü (değiştirilmediğini) garanti eder.
HS256 ile RS256 arasındaki fark nedir?
HS256, imzalamak ve doğrulamak için tek bir paylaşılan gizli anahtar kullanır (HMAC). RS256 asimetriktir: özel anahtarla imzalar ve açık anahtarla doğrular; birçok hizmetin belirteç üretemeden doğrulaması gerektiğinde idealdir.
iat, exp ve nbf talepleri ne anlama gelir?
Bunlar standart zaman damgalarıdır: iat (verilme zamanı), exp (son geçerlilik) ve nbf (şu andan önce geçersiz). 1970'ten (Unix epoch) bu yana saniye cinsinden ifade edilir.
"none" algoritması neden önerilmez?
Çünkü imzasız bir belirteç üretir: herkes yükü değiştirebilir ve yine de kabul edilir. Yalnızca test için işe yarar, üretimde asla.
Belirtecim bir sunucuya gönderiliyor mu?
Hayır. Oluşturma, çözme ve doğrulama tamamen tarayıcınızda yapılır; belirteç ve anahtarlar cihazınızdan hiç ayrılmaz.