JWT’lerin nasıl çalıştığını tam olarak anlayabilmek için çözümleme (decoding) sürecini bilmek çok önemlidir.
Bir JWT Decoder, bir JWT’nin içine gömülmüş bilgileri ortaya çıkarır ve bu sayede token’ın içerdiği verilerin bütünlüğünü ve güvenilirliğini kontrol etmeni sağlar.
Bu çözümleme işlemi, token’ın değiştirilmeyip güvenilir bir kaynaktan gelip gelmediğini doğrulamak için kritik öneme sahiptir.
Bir JWT üç bölümden oluşur:
Bir JWT çözümlendiğinde, header ve payload bölümleri Base64Url ile kodlanmış JSON nesneleri olarak ortaya çıkar.
Bu bölümleri çözümlemek için imzalama sırasında kullanılan gizli anahtar gerekmez.
Ancak imzanın doğruluğunu kontrol etmek ve token’ın geçerli olup olmadığını anlamak için bu anahtar gereklidir.
JWT’leri çözümleyerek, uygulamanın güvenliği için hayati olan veri bütünlüğünü ve kaynağın güvenilirliğini doğrulayabilirsin.
Kullanıcı bir uygulamaya giriş yaptığında, sunucu o kullanıcıya özel bir JWT oluşturur.
Bu JWT, kullanıcının ID’si ve rolleri gibi bilgileri içerir ve istemciye (tarayıcı, mobil uygulama vs.) gönderilir.
İstemci bu token’ı localStorage ya da çerezde saklar.
Sonraki her istekte, istemci bu JWT’yi HTTP Authorization başlığıyla sunucuya gönderir.
Sunucu da bu token’ı çözümleyerek kullanıcının kimliğini ve yetkilerini doğrular.
Bu yöntem sayesinde sunucu, her istekte veritabanını sorgulamak zorunda kalmaz, böylece performans artar.
Örneğin, kullanıcı korumalı bir sayfaya girmek istediğinde, sunucu JWT’yi çözümleyerek kullanıcının o sayfaya erişim iznini kontrol eder.
JWT çözümleme, hem kimlik doğrulamasını hızlandırır hem de sistemdeki gereksiz sorgu yükünü azaltır.
JWT Decoder’ın çalışma mantığını anlamak için önce JWT’nin parçalarına bakalım:
Token hakkında bilgi içerir. Genellikle türü ("JWT") ve imzalama algoritması ("HS256", "RS256" gibi) yazılıdır.
Alıcı, bu bilgileri kullanarak token’ın nasıl işleneceğini anlar.
Asıl verinin bulunduğu kısımdır. JSON formatında çeşitli claim’ler (iddialar) yer alır.
Örneğin:
Token’ın güvenliğini sağlar.
Bu imza sayesinde token’ın gerçekten o kullanıcıya ait olup olmadığı ve verinin değişip değişmediği anlaşılır.
İmza, header ve payload bilgilerinin belirli bir algoritma ile gizli anahtar kullanılarak şifrelenmesiyle oluşturulur.
JWT çözümleme işlemini kolaylaştırmak için birçok açık kaynaklı araç ve kütüphane mevcuttur. İşte popüler olanlar:
jwt-decode: Sadece çözümleme odaklı hafif bir kütüphane. İstemci tarafında hızlıca kullanılabilir.
PyJWT: JWT oluşturma, çözümleme ve imzalama gibi tüm işlemleri destekleyen kapsamlı bir kütüphane. Flask ve Django ile uyumludur.
java-jwt: Gelişmiş JWT işlemleri için kullanılan yaygın bir kütüphane. JWK desteği ve güvenlik özellikleri sunar.
jwt.io: Token’ı yapıştırarak kolayca çözümleyebileceğin popüler bir web aracı.
Doğru aracı seçerken topluluk desteği ve güvenlik geçmişi gibi kriterleri göz önünde bulundurmalısın
JWT'nin 3 bölümünü:
Header: Algoritma ve token tipi
Payload: Kullanıcı bilgileri, roller, geçerlilik süresi
Signature: İmzanın kendisi (gizlidir, doğrulama yapılmaz)
Hayır, sadece görselleştirir. Yani token geçerli mi, imza doğru mu gibi doğrulama işlemlerini yapmaz.
Evet. Bu araç sadece tarayıcında çalışır. Hiçbir veri sunucuya gönderilmez. Token’ların içeriği tamamen yerel olarak görüntülenir.