Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
JWT Derinlemesine: JWS ve JWE, Algoritma Seçimi, kid, JWKS ve Signing Key Rotation
Kesintisiz signing key rotation üç adımdır: yeni key'i JWKS'te yayınla, API'lerin cache'i yenilenene kadar bekle (varsayılan 12 saat), sonra onunla imzala ve eski key'i token ömrü dolunca kaldır. JWS ve JWE farkını, ES256 seçimini, alg none ve algorithm confusion denemelerini, at+jwt ile typ doğrulamayı, kid ve JWKS'i, 8725bis taslağının uyarılarını ve claim şişmesini gerçek çıktılarla gösteriyoruz.
Refresh Token'lar: Rotation, Reuse Detection, Revocation ve Sunucu Tarafında Güvenli Saklama
Refresh token her kullanımda yenilenmeli ve tüketilmiş bir token tekrar gelirse o girişin bütün token family'si iptal edilmeli; RFC 9700 public client'lar için bunu ya da sender-constrained token'ı zorunlu tutuyor. EF Core ve SQLite ile SHA-256 hash'li saklamayı, ExecuteUpdate ile atomik tüketimi, reuse detection'ı, iki sekme yarışını, sliding ve absolute ömrü ve tüm cihazlardan çıkışı gerçek çıktılarla kuruyoruz.
API'yi Korumak: Access Token Doğrulama, Audience, Scope Policy'leri, Client Credentials ve DPoP
API, imzası geçerli her token'ı değil, yalnız kendi audience'ı için verilmiş ve gereken scope'u taşıyan token'ı kabul etmelidir. AddJwtBearer'ı Keycloak'a bağlıyor, scope'tan policy'ye eşliyor, çıkış yapan kullanıcının JWT'sinin neden hâlâ geçtiğini introspection ile gösteriyor, client credentials token'ını cache'leyen bir DelegatingHandler yazıyor ve DPoP ile çalınan token'ın işe yaramadığını beş senaryoda doğruluyoruz.