JWT Token Nedir? Yeni Başlayanlar İçin JSON Web Token Açıklaması

Daniel SorvikDaniel Sorvik|8 dakika okuma süresi

Anahtar Çıkarımlar

• Bir JWT, uygulamalar ve API'ler tarafından kullanılan kompakt bir iddia (claim) formatıdır; kripto para birimi token'ı değildir.
• Tipik imzalı bir JWT, noktalarla ayrılmış bir başlık, yük (payload) ve imza içerir.
• Base64url kodlaması yükü şifrelemez, bu nedenle JWT içerikleri okunabilir olabilir.
• Güvenli kullanım, imza doğrulaması artı yayıncı, hedef kitle, son kullanma ve algoritma kontrolleri gerektirir.

JWT token yapısı açıklandı

JSON Web Token'ın kısaltması olan JWT token, iki taraf arasında iddiaların (claims) aktarılması için kullanılan kompakt bir formattır. Uygulamalar genellikle oturum açtıktan sonra JWT'leri kullanır: bir sunucu bir token yayınlar, istemci daha sonraki isteklerle bunu gönderir ve bir API erişime izin vermeden önce token'ı doğrular. Bir JWT, kripto para birimi token'ı değildir ve içerikleri otomatik olarak gizli değildir.

Finans, borsalar ve Web3 hizmetlerindeki hesap sistemleri arka planda token tabanlı kimlik doğrulama kullanabilir. Dijital varlık platformlarını inceleyen okuyucular, bir Tapbit hesabı oluşturabilir; geliştiriciler ise her kimlik doğrulama token'ını güvenlik açısından hassas bir kimlik bilgisi olarak ele almalıdır.

JWT Token Nedir?

JWT standardı, RFC 7519, bir JSON nesnesi olarak iletilmek üzere tasarlanmış kompakt bir iddia formatını tanımlar. Bir iddia, kullanıcı kimliği, token yayıncısı, amaçlanan hedef kitle veya son kullanma zamanı gibi bir beyandır. JWT'ler genellikle erişim token'ları, kimlik token'ları veya hizmetler arasındaki kısa ömürlü mesajlar olarak kullanılır.

İnsanlar genellikle "JWT token" derler, ancak sondaki "T" zaten token anlamına gelir. Bu tekrar yaygındır ve zararsızdır. Önemli olan, JWT'nin eksiksiz bir oturum açma sistemini değil, bir formatı tanımladığını anlamaktır. Güvenli kimlik doğrulama aynı zamanda doğru yayınlama, doğrulama, depolama, son kullanma ve iptal politikaları gerektirir.

JSON Web Token Nasıl Çalışır?

Tipik bir oturum açma akışı, kullanıcının geçerli kimlik bilgilerini göndermesiyle başlar. Kimlik doğrulama sunucusu, seçilen iddiaları içeren bir JWT oluşturur ve bunu dijital bir imza veya mesaj kimlik doğrulama kodu ile korur. Ardından istemci, JWT'yi genellikle Bearer şemasını kullanarak bir HTTP Yetkilendirme başlığında bir API'ye sunar.

API, imzayı doğrular ve isteğe güvenmeden önce gerekli iddiaları kontrol eder. Önemli kontroller arasında yayıncı, hedef kitle, son kullanma zamanı ve uygulamanın beklediği algoritma yer alabilir. Doğrulama başarılı olursa, API yetkilendirme kararı vermek için iddiaları kullanır. Başarısız olursa, istek reddedilmelidir.

JSON Web Token Nasıl Çalışır?

Bir JWT'nin Üç Bölümü

Yaygın olarak görülen imzalı bir JWT, noktalı virgülle ayrılmış üç Base64url kodlu bölümden oluşur:

header.payload.signature

  • Header (Başlık): Token türünü ve imzalama algoritmasını tanımlar.
  • Payload (Yük): Konu (subject) için sub, yayıncı (issuer) için iss, hedef kitle (audience) için aud ve son kullanma (expiration) için exp gibi iddiaları içerir.
  • Signature (İmza): Alıcının yetkisiz değişiklikleri tespit etmesini ve doğru anahtar kullanıldığında imzalayanı doğrulamasını sağlar.

Base64url kodlaması şifreleme değildir. Normal imzalı bir JWT elde eden herkes genellikle başlığını ve yükünü okuyabilir. Bu nedenle, hassas bilgiler, sistem uygun bir şifrelenmiş format kullanmadıkça ve açık bir ihtiyacı olmadıkça, yüke yerleştirilmemelidir.

Yeni Başlayanlar İçin JWT Örneği

Alice giriş yaptıktan sonra bir token yayınlayan bir API düşünün. Yükü, Alice'i konu olarak tanımlayabilir, yayıncıyı adlandırabilir, API'yi hedef kitle olarak belirtebilir ve 15 dakika içinde sona erebilir. Alice profilini istediğinde, API token'ı doğrular ve doğru hesabı bulmak için konu iddiasını kullanır.

Eğer biri yükü Alice'in kimliğinden bir yönetici kimliğine değiştirirse, imza artık eşleşmeyecektir. İmzalı bir JWT'nin temel faydası budur: kurcalama tespit edilebilir hale gelir. Ancak geçerli bir imza, her iddianın uygun olduğunu kanıtlamaz. API yine de token'ın beklenen yayıncıdan geldiğini ve o API için amaçlandığını doğrulamalıdır.

JWT vs Oturum Çerezleri vs API Anahtarları

Yöntem Tipik amaç Durum nerede yaşar? Ana değerlendirme
JWT İddialar ve API yetkilendirmesi Token iddiaları taşır; sunucular hala durumu saklayabilir Doğrulama ve iptal tasarımı
Oturum çerezi Tarayıcı oturum açma Genellikle sunucu tarafı oturum deposu Çerez ve CSRF korumaları
API anahtarı Bir uygulamayı veya projeyi tanımlama Sunucu anahtarı izinlerle eşleştirir Anahtarlar döndürülmediği sürece uzun ömürlü sırlarıdır

JWT'ler otomatik olarak oturumlardan daha iyi değildir. Oturumlar anında iptali kolaylaştırabilirken, JWT'ler tekrarlanan veritabanı aramalarını azaltabilir ve dağıtılmış hizmetlerde iyi çalışır. Birçok sistem her iki yaklaşımı birleştirir, örneğin sunucu tarafından kontrol edilen bir yenileme token kaydı ile kısa ömürlü bir JWT.

JWT'ler Şifreli midir?

Genellikle değil. Tanıdık üç bölümlü JWT, yaygın olarak imzalanmış bir JSON Web Signature nesnesidir. Doğru uygulandığında imzalama bütünlük ve orijinallik sağlar, ancak yükü gizlemez. JSON Web Encryption, gizlilik sağlayabilen ilgili bir standarttır, ancak farklı bir yapı kullanır ve anahtar yönetimi karmaşıklığı ekler.

Bu ayrım önemlidir çünkü geliştiriciler bazen bir JWT'yi bir kod çözücüye yapıştırır ve okunabilir veriler görmekten şaşırırlar. Kod çözme, imzayı başarıyla doğrulamakla aynı şey değildir. Uygulamalar asla yalnızca kodlanmış iddialara dayanarak erişim sağlamamalıdır.

Yaygın JWT Güvenlik Riskleri

IETF'nin JWT En İyi Mevcut Uygulamaları, RFC 8725, gerçek sistemlerde ortaya çıkan uygulama hatalarını ele alır. En büyük sorunlar genellikle temel formattan ziyade yanlış doğrulamadan kaynaklanır.

  • Algoritma karışıklığı: Beklenmeyen veya güvensiz bir algoritmayı kabul etme.
  • Eksik iddia kontrolleri: Yayıncı, hedef kitle, son kullanma veya diğer uygulama gereksinimlerini göz ardı etme.
  • Token hırsızlığı: Bir bearer token'ı günlükler, komut dosyaları, güvensiz depolama veya korunmasız taşıma yoluyla ifşa etme.
  • Zayıf anahtarlar: Tahmin edilebilir sırların kullanılması veya tehlikeye giren imzalama anahtarlarının döndürülmemesi.
  • Uzun son kullanma süresi: Çalınan token'ların çok uzun süre kullanışlı kalmasına izin verme.
  • Zayıf iptal: İmzalı bir token'ın asla erken geçersiz kılınması gerekmeyeceğini varsayma.

JWT En İyi Uygulamaları

Uygulamalar yalnızca destekledikleri algoritmaları açıkça izin vermeli, her gerekli iddiayı doğrulamalı ve farklı türdeki JWT'ler için ayrı doğrulama kuralları kullanmalıdır. Token'lar kısa ömürlü olmalı, yalnızca HTTPS üzerinden iletilmeli ve URL'lerden ve rutin günlüklerden hariç tutulmalıdır. İmzalama anahtarları güvenli depolama, döndürme ve net sahiplik gerektirir.

Depolama uygulamaya bağlıdır. Tarayıcı sistemleri güvenli, HttpOnly ve SameSite çerezleri kullanabilirken, mobil veya arka uç istemcileri platforma uygun korumalı depolama kullanır. Hiçbir depolama seçeneği her tehdidi ortadan kaldırmaz, bu nedenle geliştiriciler siteler arası komut dosyası çalıştırma (XSS), siteler arası istek sahtekarlığı (CSRF), token tekrar oynatma ve cihaz tehlikeye girme durumlarını birlikte değerlendirmelidir.

Sonuç

Bir JWT, sistemler arasında doğrulanabilir iddiaları taşımak için kompakt bir yoldur. Başlığı nasıl korunduğunu açıklar, yükü iddiaları içerir ve imzası alıcıların kurcalamayı tespit etmesine yardımcı olur. JWT'ler API kimlik doğrulamasını basitleştirebilir, ancak yalnızca alıcı doğru algoritmayı, yayıncıyı, hedef kitleyi, zamanlama iddialarını ve imzayı doğruladığında. Yeni başlayanlar için temel kural basittir: bir JWT, kimlik doğrulama tasarımının güvenli olduğuna dair bir kanıt değil, bir kimlik bilgisi formatıdır.

Sıkça Sorulan Sorular

JWT ne anlama gelir?

JWT, JSON Web Token anlamına gelir; iddiaları JSON olarak iletmek için standartlaştırılmış kompakt bir formattır.

Herkes bir JWT'yi kodlayabilir mi?

Tipik imzalı bir JWT'ye sahip olan herkes genellikle başlığını ve yükünü kodlayabilir. Kodlama, imzayı doğrulamaz veya iddiaları güvenilir hale getirmez.

JWT ile erişim token'ı aynı mı?

Hayır. Bir erişim token'ı bir amacı tanımlarken, JWT bir formatı tanımlar. Bazı erişim token'ları JWT'dir, diğerleri ise opak dizelerdir.

Bir JWT ne kadar süreyle geçerli olmalıdır?

Evrensel bir süre yoktur. Erişim token'ları yaygın olarak kısa ömürlüdür, kesin ömür süresi sistemin risk, iptal ve kullanılabilirlik gereksinimlerine dayanır.

Bir JWT iptal edilebilir mi?

Evet, ancak iptal, bir yasak listesi, anahtar döndürme, token versiyonlama veya sunucu tarafından yönetilen bir yenileme token sistemi gibi ek tasarım gerektirir.

Feragatname

Kripto para ticareti önemli kayıp riski içerir. Fiyatlar oldukça oynaktır ve hızla değişebilir. Protokol entegrasyonları, token faydaları ve yol haritası zaman çizelgeleri değişikliğe tabidir. Bu makale yalnızca bilgilendirme amaçlıdır ve yatırım tavsiyesi teşkil etmez. Her zaman kendi araştırmanızı yapın (DYOR) ve tamamen kaybetmeyi göze alamayacağınız miktardan fazlasını asla yatırmayın.

Kripto Piyasasında Uzmanlaşın

Uzman kaynaklar, eğitimler ve en son kripto trendlerini edinin. İşlem yapmaya başlamak için kaydolun.