JSON web token JWT nedir?

executeJS

Femtopat
Katılım
7 Ekim 2023
Mesajlar
24
Daha fazla  
Sistem Özellikleri
win11
Cinsiyet
Erkek
Meslek
Web Developer / Programmer
JSON web token hakkında internette uzun bir araştırma yaptım fakat hiçbir şey anlamadım, belki de altın değerindeki cümleyi kimse söylemedi :)
1 - JSON web token nedir?
2 - Neden kullanılır?
3 - Şu an kullanıldığı siteler var mıdır?
 
Kullanıcı girişi yaptığın zaman expire süresi felan ayarlama yapıyor.
 
Cookie ayarı için kullanılıyor backend tarafında. Şu an çoğu sitede kullanılıyor zaten cookie olarak.
 
JWT dediğin şey kullanıcıların kimliklerini ve yetkilerini yönetebilmeyi sağlar. Yani token içerisinde kullanıcıya ait "senin yerleştirdiğin" bilgiler yer alır. Mesela userId, role gibi değerler olabilir. Sen bu değerleri jwt parse ederek ulaşabilir ve istek atan kişinin kim olduğunu ve hangi role sahip olduğunu bilirsin.

2. soruya yanıt olarak şöyle vereyim, jwt kullanmadan nasıl yapabiliriz? İstek atarken rol ve kullanıcı identity değerini göndersen yetmez mi? Tabiki yeter. Fakat sistemi açık hale getirmiş olursun. Saldırgan bir kişi başka bir kullanıcıyı çok rahat taklit edebilir. Buda sisteminin zarar görmesini sağlar. JWT ise senin belirlediğin şifreye göre token oluşturur. Parse ederkende bu şifreyi kullanırsın ki doğru şekilde parse edebilesin. Şifreni kimse bilmediği içinde jwt token oluşturamazlar. Bu sayede sistemin daha güvenli hale gelmiş olur.

Peki jwt token kullanmak zorunda mıyız? Tabiki hayır. İstersen kendi token şifreleme algoritmanı yaz. Yine aynı görevi görmüş olacak. Fakat jwt çok genel görmüş ve kabul edilmiş hale geldi. Bu sebeple genelde tekerleği yeniden icat etmekle uğraşmıyoruz.

3. soruya yanıt olarak; birçok sistemde jwt kullanılıyor. Açık sekmelerime baktığımda; chatGPT ve trello siteleri jwt kullanıyor. github, slack, technopat, youtube kendi tokenlarını üretmişler. Nasıl anlıyorum; tarayıcının dev tools dan storage kısmında session.token gibi değerler olur genelde. Eğer göremezsen network kısmından giden isteklerin header ve cookie kısımlarına bakabilirsin. JWT tokenlar "ey" ile başlar ve 3 kısımdan oluşur.
 
JWT ve diğer keyler arasındaki açık ara farklardan biriside arkadaşların dediği gibi veri işleyebilmemiz içine bu yüzden server side yazılımlarda daha kısa olurken Client-side bazlı sistemlerde daha uzun olur. İçindeki data her şekilde parse edilebilir ancak buradaki güvenliği sağlayan şey Crypt algoritmandır. Kişi veriyi alıp dilediği gibi güncellese bile eğer secret keyi yoksa hiçbir işe yaramaz. Bazı durumlarda güvenlik bakımından bu bile yeterli gelmez. Böyle durumlarda da SSL ile Cryptleyip yolumuza devam ederiz kişi dilediği gibi datayı değiştirse bile SSL hashi bulamayacağı için geçerli bir token oluşturamaz. Bu yüzden Jwt'ye data gömerken KVKK'ya ve Hassas verilere uygun bir şekilde içini doldurmanı öneririm.
 
JWT, session benzersizidir. Sunucu tarafından kullanıcıyı yetkilendirme, tanımlama amacıyla kullanılır. JWT kullanırken birkaç parametre vardır ve bunlar sunucu sırrıdır. Yani kullanıcı bu parametreleri bilmez. Dolayısıyla JWT'nizin aynısı oluşturulamaz. Bu sırları sağlamayan JWT de sunucu tarafından dikkate alınmaz.

JWT'yi kimlik kartınız gibi düşünün. Kimlik numaranız Türkiye'ye özel bir algoritmayla oluşturulur. Size özel bilgileri taşır. Bu bilgiler doğrulaması yapılmadan önem arz etmez.
 
JWT, Node veya JavaScript ile geliştirilmiş uygulamalar için kullanıcı oturum kaydı. Her kullanıcı girişine benzersiz bir Token oluşturur ve session (oturum) tanımlar.

PHP Session = JS JWT

Sanırım son zamanlarda gördüğüm en saçma yanıttı. JWT JSON bazlı tüm platformlarda implemente edebileceğin bir protokoldür.
 

Geri
Yukarı