JSON Web Token'lar (JWT'ler), iki taraf arasında aktarılacak talepleri temsil etmenin kompakt, URL güvenli bir yoludur. Bu talepler genellikle bilgilerin bütünlüğünü ve orijinalliğini sağlamak için kullanılır.
Bu makale, JWT'lerin nasıl çalıştığını inceliyor. Daha sonra, üç kodlanmış ve dijital olarak imzalanmış parçadan oluşan bir JWT'nin yapısına bakacağız. Ardından, JWT'ler için yaygın kullanım durumlarını tartışacak ve bunları kullanmanın bazı faydalarını inceleyeceğiz.
Bir JWT'nin Yapısı (Örnekle)
Bir JSON Web Token (JWT), noktalarla ayrılmış üç parçadan oluşur: Başlık, Yük ve İmza. Genel yapı şöyledir:
xxxxxxxxxx.yyyyyyyyyy.zzzzzzzzzz
Başlık:
- Başlık tipik olarak iki bölümden oluşur: token'ın türü (JWT) ve HMAC SHA256 veya RSA gibi kullanılan imzalama algoritması.
- Örnek Başlık (base64 ile kodlanmış):
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Yük:
- Yük, talepleri içerir. Talepler, bir varlık (tipik olarak, kullanıcı) ve ek veriler hakkında ifadelerdir.
- Üç tür talep vardır: kayıtlı, genel ve özel talepler.
- Örnek Yük (base64 ile kodlanmış):
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
İmza:
- İmza parçasını oluşturmak için, kodlanmış başlığı, kodlanmış yükü, bir sırrı, başlıkta belirtilen algoritmayı almanız ve bunu imzalamanız gerekir.
- İmza, JWT'nin göndericisinin kim olduğunu doğrulamak ve mesajın değiştirilmediğinden emin olmak için kullanılır.
- Örnek İmza:
HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Hepsini bir araya getirmek:
Başlık: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Yük: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
İmza: HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Kodlanmış JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwia
JWT Kullanmanın Faydaları:
JWT'ler, sunucuda durum bilgisi olan oturumlara güvenmeden bütünlüğü ve orijinalliği sağlayan, kodlanmış ve imzalanmış JSON nesneleri içerir.
JWT'leri kullanışlı hale getiren bazı temel faydalar şunlardır:
- Alan verimliliği için URL güvenli JSON kodlamasından kompakt boyut
- Aşırı veritabanı sorgularından kaçınmak için gerekli tüm kullanıcı bilgilerini içeren, kendi kendine yeten
- Kurcalamaya karşı korumalı güvenlik ve orijinallik doğrulaması için dijital imzalar
- Sunucu tarafı oturumları kaldırarak ölçeklenebilirliği artırmak için durumsuz doğa
- Çoğu dilde bulunan JSON ayrıştırıcılarla evrensel birlikte çalışabilirlik
- Mevcut çerçeveleri bozmadan özel veri alanları aracılığıyla genişletilebilir
JWT ve OAuth: JWT ve OAuth Arasındaki Fark
JWT (JSON Web Token) ve OAuth, web geliştirme alanında kimlik doğrulama ve yetkilendirme bağlamında ilişkilidir ancak farklı amaçlara hizmet eder. İşte JWT ve OAuth'un kısa bir karşılaştırması:
JWT (JSON Web Token):
- Amaç: JWT, taraflar arasında bilgileri güvenli bir şekilde iletmenin kompakt, kendi kendine yeten bir yoludur. Genellikle kimlik doğrulama ve bilgi alışverişi için kullanılır.
- İçerik: JWT, bir varlık (tipik olarak, bir kullanıcı) hakkında talepler içerir ve genellikle kullanıcı kimlik doğrulaması için kullanılır. Talepler, kullanıcı kimliği, roller, izinler ve diğer ilgili bilgileri içerebilir. JWT'ler genellikle durumsuz kimlik doğrulama sistemleri oluşturmak için kullanılır.
- Kullanım: JWT'ler genellikle HTTP isteklerindeki istek başlıklarının bir parçası olarak gönderilir. Kullanıcının kimliğini ve ayrıcalıklarını temsil etmek için kullanılırlar.
OAuth (Açık Yetkilendirme):
- Amaç: OAuth , bir üçüncü taraf uygulamasının, kullanıcının kimlik bilgilerini ifşa etmeden başka bir sunucudaki kullanıcının kaynaklarına erişmesine izin veren bir yetkilendirme çerçevesidir. OAuth, kimlik doğrulama için değil, yetki devri için tasarlanmıştır.
- Roller: OAuth, Kaynak Sahibi, İstemci, Yetkilendirme Sunucusu ve Kaynak Sunucusu gibi rolleri tanımlar. Bir kullanıcının, kimlik bilgilerini paylaşmadan kaynaklarına (örneğin, fotoğraflar, kişiler) başka bir uygulamaya erişim izni verebildiği senaryoları etkinleştirir.
- Yetki Türleri: OAuth, yetkilendirme sürecinin nasıl yürütülmesi gerektiğini belirtmek için yetki türlerini (yetkilendirme kodu, örtülü, istemci kimlik bilgileri, parola vb.) tanıtır.
- Token'lar: OAuth, erişim token'ları ve yenileme token'larının kullanımını içerir. Erişim token'ları, korumalı kaynaklara erişmek için kullanılır ve yenileme token'ları, yeni bir erişim token'ı elde etmek için kullanılabilir.
Temel Farklar:
- Amaç: JWT öncelikle kimlik doğrulama ve bilgi alışverişi için kullanılırken, OAuth yetkilendirme için bir çerçevedir.
- İçerik: JWT, bir kullanıcı hakkında talepler içerirken, OAuth rolleri ve izinleri tanımlamaya ve kaynaklara erişimi yönetmeye odaklanır.
- Roller: JWT genellikle kullanıcının kimliğini temsil etmek için kullanılırken, OAuth Kaynak Sahibi, İstemci, Yetkilendirme Sunucusu ve Kaynak Sunucusu gibi rolleri içerir.
- Token'lar: JWT, kimlik doğrulama için kullanılan bir token türüyken, OAuth yetkilendirmeyi yönetmek için erişim token'ları ve yenileme token'ları sunar.
JWT Nasıl Çalışır?
JSON Web Token'lar (JWT'ler), kullanıcıların kimliğini doğrulamak için güvenli ve verimli bir yol sağlayarak kimlik doğrulamada önemli bir rol oynar. Süreç tipik olarak aşağıdaki adımları içerir:
- Kullanıcı Kimlik Doğrulaması: Kullanıcılar, kullanıcı adlarını ve parolalarını kullanarak veya Google veya Facebook gibi harici sağlayıcılar aracılığıyla oturum açarlar. Kimlik doğrulama sunucusu, kimlik bilgilerini doğrular ve kullanıcının kimliğini onaylayan bir JSON Web Token (JWT) yayınlar.
- JWT Oluşturma: Kimlik sağlayıcısı (IdP), bir JWT oluşturur ve bunu bir gizli tuz veya özel bir anahtarla imzalar. Bu JWT, kullanıcı kimliği, rolleri ve son kullanma süresi gibi temel kullanıcı bilgilerini kapsüller.
- JWT Kullanımı: Kullanıcının istemcisi, kimlik doğrulama sırasında elde edilen JWT'yi güvenli bir şekilde depolar. Korumalı kaynaklara erişirken, istemci JWT'yi HTTP Yetkilendirme başlığına dahil eder.
- Token Doğrulaması: Kaynak sunucusu, sağlanan gizli tuz veya genel anahtarı kullanarak JWT'nin orijinalliğini çözer ve doğrular. Bu işlem, token'ın bütünlüğünü ve kaynağını sağlar.
Apidog'da JWT
Apidog, JSON Web Token'ları (JWT'ler) yönetmede mükemmel olan, kullanıcı dostu bir API geliştirme ve test aracıdır. Sezgisel arayüzü ile Apidog, JWT'leri işleme sürecini basitleştirerek, token oluşturma, dinamik yönetim ve API isteklerine sorunsuz dahil etme için otomatik destek sağlar.

Bu araç, API geliştirmeyle ilgili JWT yönlerini kolaylaştırarak, geliştiricilerin iş akışlarında verimli test ve entegrasyona odaklanmasını sağlar.