Web ve protokol temelleri
Stateless HTTP ve oturumlar
Bağlantı, kullanıcı oturumu değildir.
Kavramı anlayalım
HTTP’nin stateless olması her isteğin anlamının önceki isteği varsaymadan değerlendirilebilmesini anlatır. Uygulama buna rağmen kullanıcı oturumu tutabilir. Cookie’de taşınan rastgele oturum kimliği, sunucudaki kullanıcı bağlamına bağlanabilir. Aynı TCP bağlantısını kullanmak aynı kullanıcı olmak anlamına gelmez.
Login sonrası her istekte yetki yeniden kontrol edilmelidir. Logout yalnız arayüzün kapanması değil, oturumun veya yenileme mekanizmasının geçersizleşmesidir. Dağıtık servislerde session storage, timeout, revocation ve cihaz yönetimi tasarlanır.
JWT sunucuyu bütün state ihtiyacından kurtarmaz; iptal, anahtar rotasyonu ve yetki değişikliği hâlâ problemdir. Session fixation’a karşı login’de oturum kimliği yenileme gibi kontroller gerekir. İstekle taşınan kimliği yetki kontrolüne bağlamadan güvenme.
Login tasarımı ve load balancing kararları için.
Stateless ise kullanıcı takibi yapılamaz demek.
Aynı konu. Üç farklı derinlik.
GET /account HTTP/1.1
Host: example.test
Cookie: session=opaque-exampleHer istek kimlik bağlamını taşır.
Bu sayfa dış sunuculara istek göndermez. HTTP mesajları temsili, HTTP/1.1 biçiminde okunabilir gösterimlerdir; HTTP/2 ve HTTP/3 wire formatı değildir. example.test ayrılmış öğretim alan adıdır. Komut ve JavaScript örneklerini yalnız kendi test ortamında uygula; gerçek token veya cookie yayımlama.
Önce kendin dene.
Aynı bağlantı üzerinde başka kullanıcıya ait istek gelebilir mi?
Çözümü ve açıklamasını göster
Connection identity ≠ application identityEvet; kullanıcı yetkisini bağlantı tekrar kullanımından çıkartma.