Blog Yazısı
Spring Security ve JWT Tabanlı Güvenlik Mimarisi
Spring Security 6 ve JWT kullanarak REST API güvenliği nasıl sağlanır? Stateless kimlik doğrulama ve yetkilendirme mimarisini detaylıca inceliyoruz.
Sponsorlu
JWT tabanlı güvenlik, REST APIlerde yaygın bir yaklaşımdır; fakat JWT kullanmak tek başına güvenli sistem anlamına gelmez. Token süresi, imzalama algoritması, refresh stratejisi, rol modeli, iptal mekanizması ve Spring Security filtre zinciri birlikte tasarlanmalıdır.
Stateless model
Client login sonrası access token alır ve isteklerde Authorization Bearer başlığıyla gönderir. API token imzasını ve claim değerlerini doğrular. Bu model yatay ölçekleme için avantajlıdır; ancak token iptali ve cihaz yönetimi ayrıca çözülmelidir.
Token ömrü
Access token kısa ömürlü olmalıdır. Çalınan bir token süresi dolana kadar kullanılabilir. Bu nedenle refresh token daha uzun ömürlü ama server tarafında izlenebilir ve iptal edilebilir şekilde tasarlanmalıdır.
Spring Security
Spring Security 6 ile endpoint izinleri açıkça tanımlanmalı ve varsayılan davranış güvenli tarafta kalmalıdır. JWT doğrulama filtresi token geçerliyse SecurityContexti doldurur; geçersiz tokenlarda istek reddedilmelidir.
RBAC
Token içine gereğinden fazla bilgi koymak doğru değildir. Kullanıcı id, rol ve gerekli yetki kapsamı yeterlidir. Değişebilen profil bilgilerini tokena gömmek güncellik sorunları doğurabilir.
Sonuç
JWT güçlü bir araçtır ama kısa ömürlü access token, izlenebilir refresh token, net RBAC modeli ve test edilmiş security zinciri birlikte kurulmadığında güvenlik açığına dönüşebilir.
Pratik uygulama notu
JWT mimarisinde en çok atlanan konu token iptalidir. Kullanıcı şifresini değiştirdiğinde, cihazını kaybettiğinde veya yetkisi düşürüldüğünde mevcut tokenların davranışı tanımlı olmalıdır. Kısa access token süresi, refresh token rotasyonu ve server tarafında izlenebilir oturum kaydı bu riski azaltır.