Json Web Token
JWT, bir RFC7519 endüstri standartıdır. JWT, kullanıcının doğrulanması, web servis güvenliği, bilgi güvenliği gibi birçok konuda kullanılabilir. JWT oldukça popüler ve tercih edilen bir yöntemdir.
Json Web Token Yapısı
Base64 ile kodlanmış 3 ana kısımdam oluşmaktadır bunlar; Header(Başlık),Payload(Veri),Signature(imza) kısımlarıdır.
Header(Başlık) Kısmı;
json formatında yazılmakta olup 2 alandan oluşmaktadır, Bunlar tıken tiği ve imzalama için kullanılacak algoritmanın adı.
Payload(Veri) Kısmı;
Bu kısım "claim"leri içerir. Bu kısımda tutlan veriler ile token istemci ve sunucu arasında eşsiz olur. Bu tutlan claim bilgileri de eşsizliği sağlar. Bu kısımda 3 tip claim bulunmaktadır.
Registered (Kayıtlı) claims : önceden reserve edilmiş 3 harf uzunlığunda claimlerdir. diğer claimlerdeki isimleri kullanılamaz. Bu claimlerden bazıları iss(issuer), exp (expiration time), sub (subject), aud(audience) ve diğerleri.
Public ( Açık ) claims : İsteğe bağlı, açık claimlerdir.
Private ( Gizli ) claims : Taraflarını kendi aralarında bilgi taşımak için kullandığı gizli claimlerdir.
Signature(İmza) Kısmı;
Bu kısım tokenın son kısmıdır. Bu kısmın oluşturulabilmesi için header, payload ve gizli anahtar(secret) gereklidir. İmza kısmı ile veri bütünlüğü garanti altına alınır. Burada kullandığımız gizli anahtar Header kısmında belirttiğimiz algoritma için kullanılır. Header ve Payload kısımları bu gizli anahtar ile imzalanır.
JWT Verify(Doğrulama) Kısmı ;
Doğrulama işlemi üstteki senaryoda da belirttiğimiz gibi client tarafından token geldikten sonra kullanıcının yetkisini kontrol etmek için kullanılır. Tokenın geçerli olup olmadığı JWT ile doğrulanır. JWT doğrulama işlemi oldukça basittir. Gelen tokenda Header(1. kısım) ve Payload(2. kısım) sunucumuzda bulunan gizli anahtar ile imzalanır ve 3. kısım hesaplanır. Daha sonra bu oluşturulan imza(3. kısım) client tarafından gelen imza ile karşılaştırılır. Eğer imzalar aynı ise token geçerli sayılır ve kullanıcıya erişim verilir.
Daha detaylı anlatım; https://tugrulbayrak.medium.com/jwt-json-web-tokens-nedir-nasil-calisir-5ca6ebc1584a
