What is JWT Token?

By | November 2, 2020

JWT ile üretilen token Base64 ile kodlanmış 3 ana kısımdan oluşmaktadır. Bunlar Header(Başlık), Payload(Veri), Signature(İmza) kısımlarıdır.

Örnek JWT token (aaa.bbb.ccc)

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdGF0dXMiOiJ0ZWJyaWtsZXIhIDopIn0.sTLXY5iAs1IzJJ-8GVP_pMR65qqgCUpbMl-aSPcrQHc

Header(Başlık)
Bu kısım JSOn formatında yazılmakta ve 2 alandan oluşmaktadır. Bunlar token tipi ve kullanılacak algoritmanın adıdır.

{
"alg": "HS256",
"typ": "JWT"
}

Algoritma kısımları farklılık gösterebilir. (HS256, HMAC SHA256 yada RSA)
Yukarıdaki JSON formatındaki veri Base64 ile encode edilir.
Payload(Veri)
Bu kısımda claim’ler bulunur. Bu kısımda tutulan veriler sayesinde token client ve server arasında uniqe olur.
Bu kısımda 3 tipte claim bulunabilir.

  • Registered claims: JWT tarafından önceden rezerv edilmiş 3 harf uzunluğundaki claimlerdir. Bunlar önceden ayarlanmıştır ve diğer claimlerde kullanılamaz. Örn, ise(issuer), exp(expiration time), sub(subject),aut(audience vb.
  • Public claims:İsteğe bağlı olarak açık şekilde yayınlana bilen claimlerdir.
  • Private claims: tarafların kendi aralarında bilgi taşımak için kullandıkları private claim’lerdir.

{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}


Bu kısım base64 ile encode edilir ve JWT token’ın ikinci bölümünü oluşturur.
Signature:
Bu kısım token’ın son kısmını oluşturur. Bu kısmın oluşturulabilmesi için header, payload ve private key gereklidir. İmza ile verinin bütünlüğü garanti altına alınmış olur. Header kısmında belirtilen algoritma için public key kullanılır. Header ve payload kısmı bu private key ile imzalanır.
Doğrulama işlemi:
Token client tarafından gelir. Token’ın geçerliliği JWT ile doğrulanır. Bu doğrulama işleminde client ve server tarafındaki imzalar karşılaştırılır. İmzalar aynı ise token geçerli sayılır ve kullanıcıya erişim verilir. 

  1. Stateless çalışır.
  2. Portable çalışır. (Hem web hem mobile uygulamamız aynı web servisi kullanabilir.
  3. JSON formatındadır.
  4. Doğrulama işlemi için DB’ye ihtiyaç duyulmaz. O sebeple diğer authorization metodlarına göre daha hızlıdır.
  5. Cookie kullanmaya gerek yoktur. Mobil uygulamalar için rahatlıkla kullanılabilir.

Leave a Reply

Your email address will not be published. Required fields are marked *