Nasıl kullanılır?
- HS256, HS384 veya HS512'yi seçin.
- Payload claim'lerini düzenleyin; geçerli zamanı ve bir son kullanma süresi eklemek için “iat ve exp'yi ayarla” düğmesine tıklayın.
- Bir test gizli anahtarı girin veya rastgele 256 bitlik bir anahtar oluşturun.
- İmzalı token'ı kopyalayın. Bir token'ı kontrol etmek için “İmzayı Doğrula” bölümüne geçin, token'ı yapıştırın ve gizli anahtarı girin.
Nasıl çalışır?
Bir JSON Web Token (RFC 7519), Base64URL ile kodlanmış üç bölümden oluşur: üst bilgi (header), claim'leri içeren yük (payload) ve imza. HMAC algoritmaları HS256, HS384 ve HS512 kullanıldığında imza; paylaşılan bir gizli anahtarla, “header.payload” üzerinde SHA-256, SHA-384 veya SHA-512 ile oluşturulan bir HMAC'tır. Gizli anahtara sahip olan herkes token oluşturabilir ve doğrulayabilir.
Araç, üst bilgiyi ve yükü sıkıştırılmış JSON olarak serileştirir, kodlar ve tarayıcınızda yerleşik Web Crypto API olan crypto.subtle ile imzalar. Üst bilgideki alg alanı her zaman seçilen algoritmayla eşleşir; typ varsayılan olarak JWT'dir ve kid gibi diğer üst bilgi alanları korunur. “Set iat and exp” seçeneği, geçerli saati iat (issued at – düzenlenme zamanı) olarak yazar ve seçilen geçerlilik süresini exp olarak ekler; her ikisi de 1 Ocak 1970 UTC'den itibaren saniye cinsindendir. Sonuç diğer JWT kütüphaneleriyle eşleşir; örneğin klasik jwt.io örnek token'ı birebir aynı üretilir.
Gizli anahtar düz metin olabilir (UTF-8 baytları anahtar olarak kullanılır) ya da birçok framework'te kullanılan Base64/Base64URL ile kodlanmış baytlar olabilir. Rastgele gizli anahtar düğmesi crypto.getRandomValues ile 32 rastgele bayt oluşturur. HS256 için en az 32 rastgele bayt kullanın; insan tarafından seçilen kısa gizli anahtarlar herhangi bir token'dan çevrimdışı olarak tahmin edilebilir.
Doğrulama, token'ı çözer, bir HMAC algoritması kullandığını denetler ve crypto.subtle.verify ile imzayı yeniden hesaplar. Ayrıca exp veya nbf değerlerinin token'ın süresinin dolduğunu veya henüz geçerli olmadığını gösterdiği durumları belirtir. RS256, ES256 ve diğer açık anahtarlı algoritmalar desteklenmez; buradaki doğrulama, uygulamanızın gerektirebileceği issuer (düzenleyen), audience (hedef kitle) veya diğer claim'leri kontrol etmez.
Örnekler
Bir API'yi yerel olarak test etme
Geliştirme sunucunuz “dev-secret-change-me” ile imzalanmış HS256 token'ları bekliyor. sub değerini bir test kullanıcı kimliği olarak ayarlayın, 1 saat seçiliyken “Set iat and exp” düğmesine tıklayın, gizli anahtarı girin ve token'ı Authorization: Bearer üst bilgisiyle gönderin.
Hangi gizli anahtarın token'ı imzaladığını kontrol etme
Bir staging token'ı reddediliyor. Token'ı “İmzayı Doğrula” bölümüne yapıştırın ve staging gizli anahtarını deneyin: “İmza geçersiz” mesajı, token'ın farklı bir gizli anahtarla imzalandığını veya gizli anahtarın farklı bir biçimde (metin ile Base64) olduğunu gösterir.
jwt.io örneğini yeniden oluşturma
{"alg":"HS256","typ":"JWT"} başlığı, {"sub":"1234567890","name":"John Doe","iat":1516239022} payload'ı ve “your-256-bit-secret” gizli anahtarı kullanıldığında token şu ifadeyle biter: SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c; bu, jwt.io'daki ile aynıdır.
Sık sorulan sorular
Gizli anahtarım sunucunuza gönderiliyor mu?
Hayır. İmzalama ve doğrulama işlemleri tarayıcınızda Web Crypto API ile yapılır; gizli anahtar hiçbir yerde saklanmaz veya hiçbir yere gönderilmez. Yine de yalnızca test amaçlı gizli anahtarlar kullanmanızı öneririz çünkü gerçek bir imzalama gizli anahtarı asla bir web sitesine yazılmamalıdır.
Gizli anahtar doğru olsa da imza neden geçersiz?
Gizli anahtar biçimini kontrol edin. Bazı sistemler gizli anahtarın metnini kullanır, bazıları ise önce Base64'ten çözer; bu da farklı anahtar baytları üretir. Ayrıca token'ın değiştirilmediğinden ve aynı algoritmayı kullandığından emin olun.
RS256 veya ES256 token'ları oluşturabilir miyim?
Bu araçla oluşturamazsınız. Yalnızca paylaşılan gizli anahtarlı HMAC algoritmaları olan HS256, HS384 ve HS512'yi destekler.
Payload şifreli mi?
Hayır. İmzalı bir JWT yalnızca kodlanmıştır; herkes payload'ı çözüp okuyabilir. İmza yalnızca değiştirilmediğini kanıtlar. Payload içine parola veya başka gizli bilgiler koymayın.
Gizlilik
Token'lar yalnızca tarayıcınızda Web Crypto API ile oluşturulur ve doğrulanır. Başlık, payload, token ve gizli anahtar yüklenmez, saklanmaz veya analizlere dahil edilmez.