JWT Oluşturucu ve Kodlayıcı
Ücretsiz online JWT oluşturucu ve kodlayıcı. header ve payload'ı oluşturun, HS256, RS256 ya da ES256 ile anında imzalayın. %100 tarayıcıda çalışır — gizli anahtarınız ve özel anahtarınız cihazınızdan ayrılmaz.
JWT Kodlayıcı nedir?
Bir JWT kodlayıcı, bir header ve claim'lerden oluşan bir payload'dan bir JSON Web Token oluşturup kriptografik olarak imzalar. RFC 7519'da tanımlanan bir JWT, noktalarla birleştirilmiş üç adet Base64URL ile kodlanmış bölümdür: header.payload.signature. Header imzalama algoritmasını adlandırır; payload claim'leri taşır (token kimin hakkında, neler yapabilir, ne zaman sona erer); signature ise header ve payload üzerinde bir gizli anahtar veya özel anahtarla hesaplanan, alıcının değişiklikleri tespit etmesini sağlayan kriptografik bir kanıttır.
"JSON Web Token (JWT), HTTP Authorization header'ları ve URI sorgu parametreleri gibi alanı kısıtlı ortamlarda kullanılmak üzere tasarlanmış, kompakt bir claim temsili formatıdır." — RFC 7519, Bölüm 1
Kodlama, çözmenin tersidir. Bir JWT çözücü mevcut bir token'ın claim'lerini okur; bir kodlayıcı ise sizin verdiğiniz claim'leri alıp yepyeni bir imzalı token üretir. İmzalama adımı, gerçek bir JWT'yi rastgele bir Base64'ten ayıran şeydir — geçerli bir signature olmadan hiçbir doğrulayıcı token'ı kabul etmez. Bu araç, tarayıcının yerel Web Crypto API'sini kullanarak HMAC (HS), RSA (RS, PS) ve ECDSA (ES) aileleri arasında imzalar; böylece tüm işlem cihazınızda, sıfır bağımlılık ve sıfır ağ çağrısıyla gerçekleşir.
Geliştiriciler sürekli bir JWT kodlayıcıya başvurur: korumalı bir API endpoint'ini çalıştıran bir token üretmek için, bir hatanın ayıklanabilmesi adına bir OAuth sunucusunun verdiği tam claim yapısını yeniden oluşturmak için, entegrasyon testleri için fixture inşa etmek için ya da bir ekip arkadaşına bir curl komutu için kullanıma hazır bir Bearer token vermek için. Payload kodlanmış, şifrelenmemiş olduğundan, bir JWT'yi ağ üzerinden geçirmek güvenlidir ama içine asla sır taşımamalıdır — token'a sahip olan herkes her claim'i okuyabilir ve yalnızca signature onların bir claim'i değiştirmesini engeller.
JWT işi diğer geliştirici araçlarıyla doğal olarak eşleşir. İmzaladıktan sonra claim'lerini onaylamak için token'ı çözün, exp ve iat'i Unix zamanı ile insan tarafından okunabilir tarihler arasında dönüştürün ya da HS256'nın HMAC'inin üzerine kurulu olduğu temel özet fonksiyonuna ihtiyaç duyduğunuzda bir SHA-256 özeti hesaplayın. Her JWT segmenti Base64URL ile kodlandığından, bir token'ı elle incelerken bir Base64 aracı işe yarar; kodlamaya derinlemesine bir bakış için Base64 temelleri rehberimize bakın.
// Sign a JWT in the browser with the Web Crypto API (HS256)
async function encodeJwt(payload, secret) {
const b64url = (bytes) =>
btoa(String.fromCharCode(...new Uint8Array(bytes)))
.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
const enc = (obj) =>
b64url(new TextEncoder().encode(JSON.stringify(obj)));
const header = { alg: 'HS256', typ: 'JWT' };
const signingInput = `${enc(header)}.${enc(payload)}`;
const key = await crypto.subtle.importKey(
'raw', new TextEncoder().encode(secret),
{ name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
const sig = await crypto.subtle.sign(
'HMAC', key, new TextEncoder().encode(signingInput));
return `${signingInput}.${b64url(sig)}`;
}
const token = await encodeJwt({ sub: 'user_123', exp: 1999999999 }, 'my-secret');
// → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsImV4cCI6MTk5OTk5OTk5OX0.... Temel Özellikler
JWT'leri Anında Oluşturun ve İmzalayın
Payload'ı düzenleyin ve imzalı token'ın gerçek zamanlı güncellenmesini izleyin — header, payload ve signature anında hesaplanır. Oluştur düğmesi yok, sunucuya gidiş-dönüş yok.
Tam Algoritma Kapsamı
HS256/384/512, RS256/384/512, PS256/384/512 ve ES256/384/512 ile imzalayın — her yaygın JWS ailesi, tümü tarayıcının yerel Web Crypto API'si aracılığıyla.
Anahtarlar Cihazınızdan Asla Ayrılmaz
Gizli anahtarınız ve PKCS8 özel anahtarınız tamamen tarayıcı içinde kullanılır. Hiçbir şey yüklenmez, kaydedilmez veya depolanmaz — geliştirme ve olay müdahalesi için güvenlidir.
Hızlı Claim Yardımcıları
iss, sub, aud, iat, nbf ya da bir saatlik bir exp'i tek tıkla ekleyin — elle Unix zaman damgası yok, sözdizimi hatası yok.
Renk Kodlu Çıktı
İmzalı token, farklı renklerle header, payload ve signature olarak segmentlere ayrılır; böylece yapı bir bakışta belli olur ve kopyalaması kolaydır.
Sıfır Bağımlılık
Yalnızca tarayıcının Web Crypto API'si ve JSON üzerine kuruludur — dış kütüphane yok, telemetri yok, her türden ağ çağrısı yok.
Örnekler
HS256 Oturum Token'ı
{
"sub": "user_123",
"name": "Alice",
"role": "admin",
"iat": 1715000000,
"exp": 1999999999
}
secret: a-string-secret-at-least-256-bits-long eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.<HMAC-SHA256 signature>
Paylaşılan bir gizli anahtarla imzalanmış bir HMAC-SHA256 token'ı — durumsuz oturum kimlik doğrulaması için en yaygın yapı. Aynı gizli anahtara sahip herkes bunu doğrulayabilir.
RS256 Erişim Token'ı
{
"iss": "https://auth.example.com",
"aud": "api.example.com",
"sub": "90087165",
"scope": "read:user write:post",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (PKCS8) eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsInNjb3BlIjoicmVhZDp1c2VyIHdyaXRlOnBvc3QiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<RSA signature>
RSA imzalı, OAuth tarzı bir erişim token'ı. Token, özel anahtarınızla imzalanır ve eşleşen açık anahtara sahip herkes tarafından doğrulanır — doğrulayan tarafın token üretememesi gerektiğinde idealdir.
ES256 Kompakt Token
{
"sub": "device-42",
"iat": 1715000000,
"exp": 1999999999
}
private key: -----BEGIN PRIVATE KEY----- (P-256) eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJkZXZpY2UtNDIiLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OX0.<ECDSA P-256 signature>
P-256 eğrisi üzerinde bir ECDSA token'ı. ES256 imzaları, eşdeğer güvenliği sunarken RSA'dan çok daha kısadır; bu da token'ı kısıtlı ortamlar için küçük tutar.
Nasıl Kullanılır
- 1
Payload Claim'lerini Düzenleyin
Token'ınızın ihtiyaç duyduğu claim'leri payload editörüne JSON olarak yazın. Zaman damgalarını elle yazmadan iss, sub, aud, iat, nbf ya da bir saatlik bir exp eklemek için hızlı claim çiplerini kullanın.
- 2
Algoritmayı Seçin ve Anahtarı Girin
Bir imzalama algoritması seçin. HS256/384/512 için bir gizli anahtar girin; RS, PS ya da ES algoritmaları için bir PKCS8 PEM özel anahtarı yapıştırın. Token siz yazdıkça yerel olarak imzalanır.
- 3
İmzalı JWT'yi Kopyalayın
İmzalı token, segmentlere göre renk kodlu olarak anında görünür. Bir Authorization header'ına, curl komutuna ya da teste taşımak için Kopyala'ya tıklayın. Anahtarınız tarayıcınızdan asla ayrılmadı.
Common Errors
Zayıf Bir HMAC Gizli Anahtarı Kullanmak
HS256 güvenliği tamamen gizli anahtarın entropisine bağlıdır. Kısa veya tahmin edilebilir bir gizli anahtar, saldırganların onu kaba kuvvetle bulup token sahteciliği yapmasına olanak tanır. En az 256 bit rastgelelik kullanın.
secret: "password123" // guessable, low entropy
secret: base64(crypto.randomBytes(32)) // >=256 random bits
exp Claim'ini Atlamak
exp'siz bir token asla sona ermez. Sızdırılırsa, doğal bir iptal noktası kalmaz. Token türüne uygun bir son kullanma her zaman ayarlayın.
{ "sub": "user_123", "role": "admin" } // no exp { "sub": "user_123", "role": "admin", "exp": 1715003600 } PKCS8 Yerine PKCS1 Anahtar Yapıştırmak
Web Crypto API yalnızca PKCS8 özel anahtarlarını içe aktarır. Geleneksel bir RSA PKCS1 anahtarı içe aktarılamaz — önce onu dönüştürün.
-----BEGIN RSA PRIVATE KEY----- // PKCS1, not supported
openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem
Yaygın Kullanım Senaryoları
- API Testi İçin Token Üretin
- Korumalı bir endpoint'i curl, Postman ya da bir entegrasyon testinden çalıştırmak için saniyeler içinde bir HS256 Bearer token'ı üretin.
- OAuth ve OIDC Token'larını Yeniden Üretin
- Yetkilendirme sunucunuzun verdiğini yansıtan bir RS256 veya ES256 token'ı oluşturarak claim ve audience uyumsuzluklarını ayıklayın.
- Test Fixture'ları Oluşturun
- Tam bir kimlik doğrulama sunucusu ayağa kaldırmadan birim ve entegrasyon testleri için deterministik imzalı token'lar üretin.
- Yetkilendirme Hatalarını Ayıklayın
- Bir backend'in bir token'ı neden reddettiğini bulmak için bir müşterinin token yapısını — issuer, audience, scope, son kullanma — yeniden oluşturun.
- Bir Doğrulayıcıyı Sınayın
- Bilinen bir anahtarla token imzalayarak doğrulama ara katmanınızın geçerli token'ları kabul edip değiştirilmiş olanları reddettiğini onaylayın.
- Kimlik Doğrulama Akışlarını Prototipleyin
- Yeni bir oturum açma, mikroservis ya da servis-arası çağrıyı kurarken ekip arkadaşlarınıza kullanıma hazır token'lar verin.
Teknik Ayrıntılar
- RFC 7519 / 7515 / 7518 Uyumlu
- RFC 7519 (JWT), RFC 7515 (JWS) ve RFC 7518 (JWA) ile uyumlu JWS token'ları üretir; header'da kayıtlı algoritma tanımlayıcılarıyla.
- Yerel Web Crypto İmzalama
- HMAC, RSASSA-PKCS1-v1_5, RSA-PSS ve ECDSA için crypto.subtle aracılığıyla imzalar. ECDSA imzaları, JWS'in tam olarak gerektirdiği gibi ham r||s olarak üretilir.
- Base64URL, Sıfır Bağımlılık
- Header ve payload, URL-güvenli alfabeyle (RFC 4648) ve dolgu olmadan Base64URL kodlanır. Dış kütüphane yok, ağ çağrısı yok, telemetri yok.
En İyi Uygulamalar
- Her Zaman Bir Son Kullanma Ayarlayın
- Sızdırılan bir token'ın geçerliliğini yitirmesi için bir exp claim'i ekleyin. Kısa ömürler zarar yarıçapını küçültür — erişim token'ları için günler değil dakikalar.
- Sırları Payload'ın Dışında Tutun
- Bir JWT payload'ı, token'a sahip olan herkes tarafından okunabilir. İçine tanımlayıcıları ve scope'ları koyun; asla parolaları, API anahtarlarını ya da tüm PII'yi değil.
- Üretimde Sunucu Tarafında İmzalayın
- Bu aracı testler ve hata ayıklama için kullanın. Gerçek sistemlerde token'ları sunucuda, bakımı yapılan bir kütüphane ve secrets manager'ınızdan bir anahtarla imzalayın.
Sıkça Sorulan Sorular
Bir JWT'yi online nasıl oluştururum?
JWT oluşturucu nedir?
header.payload.signature karakter dizisi üreten bir araçtır. Bir JWT çözücünün tersidir: mevcut bir token'ı okumak yerine, gizli anahtarınızla (HS256) veya özel anahtarınızla (RS256/ES256) imzalanmış yeni bir token oluşturur. Bu oluşturucu tamamen tarayıcınızda çalışır; böylece token anında üretilir ve imzalama anahtarınız cihazınızdan asla ayrılmaz. Bu JWT oluşturucu ücretsiz ve kullanımı güvenli mi?
Gizli anahtarımı veya özel anahtarımı buraya girmek güvenli mi?
HS256 ile RS256 arasındaki fark nedir?
Bu JWT kodlayıcı hangi algoritmaları destekler?
exp (son kullanma) claim'ini nasıl ayarlarım?
exp claim'i ekleyin — örneğin "exp": 1999999999. En hızlı yol, payload'ın altındaki exp +1h çipidir; bu, şu andan bir saat sonrasına bir son kullanma ekler. Aynı şekilde iat (düzenlenme) ve nbf (not-before) de ekleyebilirsiniz. Unutmayın ki exp milisaniye değil saniye cinsindendir ve doğrulayan taraf onu kendi saatiyle karşılaştırır; bu yüzden erken reddedilmeleri önlemek için sunucu saatlerini senkron tutun. İnsan tarafından okunabilir bir tarihi Unix zaman damgasına çevirmek için Unix zaman damgası dönüştürücümüzü kullanın. RS256 veya ES256 için PKCS8 PEM özel anahtarını nasıl elde ederim?
openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 -out private.pem. ECDSA P-256 için: openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:P-256 -out ec-private.pem. Her iki komut da -----BEGIN PRIVATE KEY----- ile başlayan bir PKCS8 PEM bloğu üretir; bu, tam olarak bu aracın beklediği şeydir. Header ve footer satırları dahil bloğun tamamını yapıştırın. Token'ı doğrulamak için kullanılan eşleşen açık anahtar openssl pkey -in private.pem -pubout ile türetilebilir. Az önce oluşturduğum token'ı nasıl doğrularım?
jwt.verify(token, secretOrPublicKey, { algorithms: ['HS256'] }), Python'da PyJWT.decode(token, key, algorithms=['RS256']) ya da Go'da jwt.Parse(token, keyFunc). Üretimde asla boş bir algoritma listesiyle veya verify_signature=False ile doğrulama yapmayın — her zaman beklediğiniz tam algoritmayı sabitleyin. Payload'a ne koymalıyım?
iss (issuer), sub (subject — genellikle bir kullanıcı kimliği), aud (audience), exp (son kullanma), nbf (not before), iat (issued at) ve jti (token kimliği). Bunların yanında role, scope ya da email gibi uygulama claim'leri de ekleyebilirsiniz. Payload'a sır koymayın — bir JWT kodlanmıştır, şifrelenmemiştir, dolayısıyla token'a sahip olan herkes her claim'i okuyabilir. Authorization header'larına ve çerezlere sığsınlar diye token'ları yaklaşık 4 KB'nin altında tutun. Bir JWT şifreli midir?
RS256 veya ES256 imzalamam neden başarısız oluyor?
-----BEGIN RSA PRIVATE KEY----- (PKCS1) anahtarını openssl pkcs8 -topk8 -nocrypt -in old.pem -out pkcs8.pem ile dönüştürün; (2) eğri algoritmayla eşleşmiyor — ES256 bir P-256 anahtarı, ES384 P-384, ES512 P-521 ister; (3) özel anahtar yerine bir açık anahtar ya da bir sertifika yapıştırdınız; veya (4) anahtar bir parolayla şifrelenmiş ve Web Crypto API bunu doğrudan içe aktaramaz. Önce openssl pkey ile şifresini çözün ve şifresiz PKCS8 bloğunu yapıştırın. Bu araç alg:none imzasız token'ı destekler mi?
alg:none token'ının signature'ı yoktur; bu da herkesin böyle bir token üretebileceği anlamına gelir — klasik bir JWT kimlik doğrulama atlama zafiyetinin köküdür. Bir kodlayıcının tüm amacı imzalı bir token üretmek olduğundan, bu araç yalnızca gerçek imzalama algoritmaları sunar. Güvenlik araştırması için alg:none üzerinde çalışıyorsanız, header ve payload'ı Base64URL ile kodlayıp signature segmentini boş bırakarak elle bir tane oluşturabilirsiniz — token yine de sondaki bir noktayla biter (header.payload.) — ama üretimde böyle bir token'ı asla kabul etmemelisiniz. JWT'yi bunun yerine kodda oluşturabilir miyim?
jsonwebtoken.sign(payload, secret, { algorithm: 'HS256', expiresIn: '1h' }). Python'da: PyJWT ile jwt.encode(payload, key, algorithm='RS256'). Go'da: jwt.NewWithClaims(jwt.SigningMethodES256, claims).SignedString(privateKey). Bu araç, hızlı bir test, bir curl isteği ya da bir fixture için token üretmenin en hızlı yoludur — ama uygulama kodunda token'ları sunucu tarafında, bakımı yapılan bir kütüphane ve secrets manager'ınızdan yüklenen bir anahtarla üretmelisiniz, asla kodun içine sabitlenmiş bir anahtarla değil. İlgili Araçlar
Tüm araçları görüntüleyin →JWT Çözücü
Güvenlik Araçları
Ücretsiz JWT çözücümüzle JWT token'larını online çözün. header, payload, signature, son kullanma, algoritma ve claim'leri anında inceleyin. %100 tarayıcıda çalışır — token'ınız cihazınızdan ayrılmaz. Kayıt yok, izleme yok.
MD5 Özet Üretici ve Dosya Sağlama Aracı
Güvenlik Araçları
MD5, SHA-256, SHA-1 ve SHA-512 özetlerini online ücretsiz üretin. Tarayıcınızda metin veya dosya özeti alın, sağlama değerlerini doğrulayın ve sonuçları kopyalayın. Kayıt gerekmez.
Rastgele Şifre Üretici — Özelleştirilebilir ve Güvenli
Güvenlik Araçları
Anında güçlü rastgele şifreler üretin — ücretsiz, %100 tarayıcınızda. Uzunluk ve karakterleri özelleştirin, entropi analiziyle 50'ye kadar toplu üretim.
SHA-1 Özet Üretici (160-bit Eski Algoritma)
Güvenlik Araçları
SHA-1 özetlerini tarayıcınızda üretin — 40 karakterlik hex çıktısı, yükleme yok. Git parmak izleri, eski sertifika kontrolleri ve taşıma denetimleri için eski araç. Veriler cihazınızdan ayrılmaz.
SHA-256 Özet Üretici ve Sağlama Aracı
Güvenlik Araçları
SHA-256 özetlerini ücretsiz üretin. Metin veya dosyaları tarayıcınızda özetleyin, sağlama toplamlarını doğrulayın, 64 karakterlik hex çıktısını kopyalayın. Kayıt gerekmez; veriler sayfadan ayrılmaz.
SHA-3 Özet Üretici (Keccak SHA3-256)
Güvenlik Araçları
SHA-3 özetlerini ücretsiz üretin. NIST FIPS 202 sünger yapısı — SHA-2 sonrası standart. SHA3-256 çıktısı 64 hex karakter. Geç yüklenen js-sha3 aracılığıyla yalnızca tarayıcıda; sıfır yükleme.