İçeriğe geç

JWT’nin Hikayesi

Medium'da okuduğum bir yazıyı özetleyrek türkçeleştirmek istiyorum, içerisinde çok değerli bilgiler var ve JWT'ile çalışan developer'ların bilmesi gerektiğini düşünüyorum.
API dünyası başladığından beri JWT'nin kullanımı herkeşçe bilinir oldu artık hemen hemen bütün eğitim içeriklerinde JWT'ye yer veriliyor ancak hikayesinden bahseden henüz görmedim bununla alakalı videolu bir eğitim içeriği hazırlamak istiyorum bundan dolayı notlarımı şimdiden hazırlamaya başladım. Anlatmayı plandığım konuları genel olarak isimlendirmek gerekirse:

  1. JWT'nin Hikayesi,
  2. JWT'nin Uygulanması
  3. JWT Teknolojisine Siber Güvenlik Bakış Açısıyla Yaklaşım
    Yukarıda bahsettiğim eğitim içeriğinin birinci yazısını şuanda okumaya başladınız ve A'dan Z'ye JWT'nin doğuş hikayesine bakalım.

Giriş

Kullanılan teknolojilerin büyük bir çoğunluğu aslında bir ihtiyacı gidermek üzere doğmuştur ve bu teknolojileri projelerimizde kullanırken aslında doğuş hikayelerini bilmek bize özgüven verecek ve motivasyon sağlayacaktır. "Herkes kafasına göre teknoloji çıkartıyor, bu nedir böyle!" tarzı yaklaşımlardan vazgeçmeye çalışmalıyız biri bir şey yaptıysa bir nedeni vardır şeklinde düşünüp hikayesini araştırmamız gerekmektedir. Peki JWT'nin hikayesi nedir? Bu aslında HTTP servisinin en temeline dayanmaktadır.

Stateless

HTTP istekleri stateless'dır. Bu şu anlama gelmekte sizin yaptığınız istekle bir önceki isteğiniz arasında hiçbir mantıksal ilişki bulunmamaktadır. İki istek kesinlikle birbirini tanımaz. Bundan dolayı bir sisteme giriş yaptığınızda size cevap olarak cookie ataması yapılacaktır. Bu cookie'ler kullanılarak istek yaptığınız sunucu sizi tanıyacak ve giriş işlemi yaptığınız sistemde istediğiniz gibi dolaşabileceksiniz.

Örnek olarak php ile yazılmış basit bir sayfa düşünelim ve giriş yaptığınızda php bir session başlaacaktır. Bu session değerleri sunucun olduğu bilgisayarda her session'a özgü hashlenmiş dosyalarda saklanmaktadır. Size cevap olarak http header'ları içerisinde bu dosyanın ismi cookie olarak dönmektedir. Sizde bu cookie'lerle sistemde istediğiniz gibi dolaşabilirsiniz eğer session'u öldürecek bir kod çalıştırırsanız sunucu tarafında ilgili dosya silinecektir.

İşte bu teknoloji çözümüne Server Side Session denilmektedir ve mükemmel olmasına rağmen artık çağ dışıdır. Burada biraz belki abartmış olabilirim küçük projelerde kullanılabilir ancak kurumsal projelerde kullanılmamalıdır. Neden çağ dığı diyoruz peki?

Büyük bir projede trafiğiniz çok yoğun olduğunda büyük bir ihtimalle birden fazla sunucu kullanmak isteyeceksiniz. Bu durum teknolojik bir yaklaşım ancak bazı sorunları beraberinde getiriyor. Sunucularınızın önüne bir Load-Balancer koyduğumuzu düşüneli ve hangi sunucumuz daha müsait durumdaysa LB isteği bu sunucuya yönlendirecektir. Ancak A Suncusunda girş yapmış birinin Server Side Session'ı A suncuusunun içine yazıldı. Doğal olarak B sunucusu bu cookie değerini tanımayacaktır ve kullanıcının oturumu düşecektir. Şimdi, elimizde bir problem var ve bu problemi çözmemiz gerekmekte ve şanslıyız çözümüde var. Bütün oturum bilgilerinin tutulduğu bir sunucu ayağa kaldırılıyor ve bütün kontroller bu sunucu tarafından gerçekleştiriliyor. Mimarinize sadece yeni bir sunucu eklemeniz ve konfigüre etmeniz yeterli olacaktır. Peki bu yöntem doğru mu? Birçok kurumsal projede bu yöntemi görebilirsiniz ancak bu ekstra maliyet demek olacaktır işte JWT tamda burada devreye girmekte sizi ekstra bir sunucu yükünden kurtaracaktır.

The Better Solution

Açıkçası okuduğum makaledeki başlığı direkt olarak kopyaladım, okurken çok heycanlıydım ve yeni bir başlığa geçerken başlığı içimden çok vurgulu bir şekilde okudum, bu tarz duygusal çıkışlar okuduklarımın hafızama daha iyi kaydedilmesini sağlıyor bundan dolayı başlığımız bu 🙂
JSON Web Token yani JWT RFC7519 ile desteklenmektedir ve 3 kısımdan oluşur, bunlar:

  1. the header;
  2. a payload or body;
  3. a signature;

devamı gelecek...

Kategori:Teknoloji Hikayeleri

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir