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.