JWT TOKEN

JWT (JSON Web Tokens) iki sistem veya daha fazla birbiriyle haberleşen sistemlerin aralarında doğrulama yapmasını sağlayan bir yapıdır. 2 sistem düşünelim. Birbiri ile haberleşirken simetrik yada asimetrik keyler ile gönderilen veriyi imzalar ve karşı tarafta simetrik ise aynı asimetrik ise private veya public key ile imzayı doğrular. Bu şekilde karşıdan gelen verinin veri bütünlüğü sağlanmış olur.

JWT Yapısı

JWT (JSON Web Tokens) yapı olarak header payload ve signature kısımlarından oluşmaktadır.

HEADER

{
“alg”: “HS256”,
“typ”: “JWT”
}

PAYLOAD

{
“sub”: “DENEME”,
“name”: “DENEME”,
“veri”:”merhaba dünya,
“iat”: 1516239022
}

SIGNATURE

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  imzapassword
) 
  • HEADER: verinin tipini ve imzalama algoritmasını belirtir.
  • PAYLOAD:verinin içeriğinin yazıldığı alandır.
  • SIGNATURE: verinin imzalandıktan sonraki imza hashinin bulunduğu yerdir.

Yukarıdaki kısımların imzalandıktan sonraki hali aşağıdadır bölümler “.” işareti ile ayrılırlareyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiJERU5FTUUiLCJuYW1lIjoiREVORU1FIiwidmVyaSI6Im1lcmhhYmEgZMO8bnlhIiwiaWF0IjoxNTE2MjM5MDIyfQ.
3W287JAzjVXOek78eDxK6hwfbP5iQUm2xoAZejpJOik

HEADER PAYLOAD VE SIGNATURE KISMI BASE64 ile encrypt edilir ve daha sonra SIGNATURE oluşur. Burda şunu unutmamak gerekir JWT sizin verilerinizi şifrelemez sadece verilerinize ve algroritmaya göre imza üretir ve karşı tarafta aynı key ile o imzayı doğrular. Bu örnekte araya birinin girdiğini ve verinizde değişiklik yaptığını düşünelim.PAYLOAD kısmından “merhaba dünya” kısmını “merhaba” yapmış olsun. bu durumda en fazla yapacağı şey payload kısmını “merhaba” olarak değiştirdikten sonra base64 e çevirmek olacaktır fakat imza kısmı key elinde olmadığı için değişmeyecek ve karşı taraf bu veriyle böyle bir imza üretilemez deyip bu veri bozulmuş kanaatine varacaktır.

JWT nerelerde kullanılır ?

JWT nin kullanıldığı yeri bir örnekle açıkladıktan sonra daha çok akılda kalacağını düşünüyorum.

Bir alışveriş sitesinin giriş sayfasındasınız. kullanıcı adı ve şifre girdiniz ve server eğer bu bilgiler doğruysa size bir token oluşturdu ve gönderdi. Bundan sonra alışveriş sitesine yapacağınız her istek size verilmiş o token la birlikte yapılır ki alışveriş sitesi bu isteğin gerçekten sizin yaptığınızdan emin olması gerekir ve payload kısmına token geçerlilik süreside eklenir sürekli tokeniniz değişir.

Dilim döndüğünce size jwt token hakkında bilgi vermeye çalıştım. Ayrıntılı bilgi için https://jwt.io/ adresindeki dökümanları okuyabilirsiniz. Takıldığınız yerleri yorum olarak  gönderebilirsiniz …

Bir Cevap Yazın