Ne işe yarar
JSON Web Token (JWT, RFC 7519), noktalarla ayrılmış üç parçadan oluşan kompakt ve URL güvenli bir dizedir: imza algoritmasını belirten başlık, beyanları (claims) içeren yük ve ilk iki parçanın imzası. API’ler JWT’yi bearer token, kimlik sağlayıcılar ise ID token olarak kullanır.
Bu araç bir JSON yükünden token oluşturup imzalar. Desteklenenler:
- HS256, HS384, HS512: metin veya Base64 olarak paylaşılan gizli anahtarla HMAC.
- RS256, RS384, RS512 ve PS256, PS384, PS512: PEM özel anahtarla RSA imzaları.
- ES256, ES384, ES512: EC özel anahtarla ECDSA imzaları.
Nasıl kullanılır
- Yükü bir JSON nesnesi olarak yazın veya Örnek’e tıklayın.
- Algoritma’yı seçin ve giriş kutusunun üstüne gizli anahtarı yazın ya da PEM özel anahtarı yapıştırın.
- İsterseniz iat’ı şimdiye ayarlayın, bir bitiş süresi (exp) veya anahtar kimliği gibi ek başlık alanları ekleyin.
- Token’ı çıktıdan kopyalayın. İncelemek için JWT çözücüye yapıştırın.
Örnek
Gizli anahtar your-256-bit-secret iken aşağıdaki yük HS256 ile imzalandığında jwt.io’daki bilinen örnek token elde edilir:
{"sub":"1234567890","name":"John Doe","iat":1516239022}
Başlık her zaman {"alg":"HS256","typ":"JWT"} olarak, ardından eklediğiniz alanlarla yazılır; alg her zaman seçilen algoritmayı izler.
İyi uygulamalar
Token’ları exp beyanıyla kısa ömürlü tutun ve bir servis için verilen token’ın başka bir serviste yeniden kullanılamaması için iss ve aud ayarlayın. Sunucuda imzayı her zaman izin verilen algoritmaların açık bir listesiyle doğrulayın ve none’u reddedin. HMAC gizli anahtarları uzun ve rastgele olmalı, en az hash çıktısı kadar (HS256 için 32 bayt) uzun olmalıdır.
SSS
› Hangi algoritmayı seçmeliyim?
Sunucunuzun doğruladığını seçin. HS256 paylaşılan bir gizli anahtar kullanır ve tek bir sistem içinde yaygındır. RS256 ve ES256 özel anahtarla imzalar, herkes açık anahtarla doğrulayabilir; bu, birden çok servisin kontrol ettiği token’lar için uygundur. ES256 imzaları RS256’dan çok daha kısadır.
› Hangi özel anahtar biçimleri kabul edilir?
PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 RSA (BEGIN RSA PRIVATE KEY) ve SEC1 EC (BEGIN EC PRIVATE KEY) biçimindeki PEM anahtarlar. Şifreli anahtarlar önce parola olmadan dışa aktarılmalıdır. ES256, ES384 ve ES512 için anahtar sırasıyla P-256, P-384 veya P-521 eğrisinde olmalıdır.
› JWT yükü gizli midir?
Hayır. Başlık ve yük yalnızca Base64URL ile kodlanmıştır; token’a sahip olan herkes okuyabilir. İmza değişikliği engeller, okumayı değil. JWT yüküne asla parola veya başka gizli bilgi koymayın.
› Gizli anahtarım veya özel anahtarım kaydediliyor ya da gönderiliyor mu?
Hayır. İmzalama tarayıcınızda Web Crypto API ile yapılır. Gizli anahtar veya özel anahtar yalnızca bu sayfanın belleğinde tutulur; kaydedilmez, adres çubuğuna yazılmaz ve paylaşım bağlantılarına eklenmez. Yine de üretim anahtarlarını kontrol etmediğiniz web sayfalarına yapıştırmaktan kaçının.