Güncel değerler

Sözlük

JSON Web Token

Kısa tanım

JSON Web Token (JWT), iki taraf arasında kimlik ve yetki bilgilerini imzalı, kompakt ve URL'de taşınabilir biçimde ileten açık standarttır (RFC 7519).

Diğer adları: JWT, JSON web belirteci

Bir web sitesine giriş yaptığında sunucu sana çoğu zaman uzun, noktalarla ayrılmış anlamsız görünen bir metin verir. Sonraki her istekte bu metin, kim olduğunu kanıtlar. Bu metin genellikle bir JSON Web Token'dır.

Üç parça

Bir JWT, noktayla ayrılmış üç bölümden oluşur: başlık.yük.imza.

  • Başlık (header): Kullanılan imza algoritmasını ve tür bilgisini taşır, örneğin {"alg": "HS256", "typ": "JWT"}.
  • Yük (payload): Talepleri (claim) içerir: kullanıcı kimliği (sub), oluşturulma zamanı (iat), son kullanma zamanı (exp), yayıncı (iss) gibi.
  • İmza: İlk iki bölümün gizli anahtar ya da özel anahtarla imzalanmış hâlidir.

Başlık ve yük Base64URL ile kodlanır; şifrelenmez. Yani herkes içeriği okuyabilir. Bir token'ın içinde ne yazdığını JWT çözücüyle çözerek görebilirsin.

İmza neyi garanti eder?

İmza, içeriğin değiştirilmediğini ve token'ı anahtar sahibinin ürettiğini doğrular. HS256 gibi simetrik algoritmalarda aynı gizli anahtar hem imzalar hem doğrular; RS256 gibi asimetrik algoritmalarda özel anahtarla imzalanıp açık anahtarla doğrulanır.

Zaman talepleri

exp ve iat değerleri Unix zaman damgasıdır, yani 1 Ocak 1970'ten bu yana geçen saniye. Örneğin exp: 1893456000, 1 Ocak 2030 00:00 UTC'yi gösterir; bu tarihten sonra token geçersiz sayılmalıdır. Bu sayıları tarihe Unix zaman damgası dönüştürücüsüyle çevirebilirsin.

Güvenlik notları

  • Yüke parola, kart bilgisi gibi gizli veri koyma; içerik açıkça okunabilir.
  • Sunucu tarafında imzayı ve süreyi her zaman doğrula; algoritma alanını “none” kabul eden yapılandırmalar ciddi açık doğurur.
  • Kısa ömürlü erişim token'ı ve ayrı bir yenileme token'ı kullanmak, çalınma riskini azaltır.
  • İçeriğin gizli kalması gerekiyorsa imzalı JWT yerine şifreli biçim (JWE) kullanılır.

Benzer terimler

İlginizi çekebilir