OAuth 2.0, OIDC ve PKCE
state, nonce ve PKCE: neden üçü var?
Callback bağlama, token replay ve code interception ayrı tehditlerdir.
Kavramı anlayalım
state, authorization yanıtını başlatılan client oturumuna bağlamak ve akışın istek-yanıt ilişkisini korumak için kullanılır. Yüksek entropili, oturuma bağlı ve tek kullanımlık değer yaygın desendir. Dönüşte gelen değeri yalnız var mı diye değil beklenen bağlamla eşleşiyor mu diye denetle. Redirect hedefini state içine koyacaksan doğrulama ve veri bütünlüğü ayrıca gerekir.
OIDC nonce ilk isteği ID token’a bağlar. İstekte nonce gönderildiyse dönen ID token’daki nonce doğrulanmalıdır. ID token’ın imza, issuer, audience ve zaman kontrolleri de gereklidir. nonce eşleşmesi tek başına token’ı güvenilir yapmaz. PKCE ise code exchange’i verifier’a bağlar; farklı bir saldırı yüzeyine yönelir.
Modern kütüphaneler belirli akışlarda bu korumaları birlikte yönetir. Eksik bilgiden yola çıkıp “PKCE varsa state gereksiz” diye kendi akışını basitleştirme; güvenlik profili ve kullandığın kütüphane sözleşmesi belirleyicidir. Birden fazla sekmenin callback değerlerini karıştırmamak için transaction bazlı saklama gerekir. Doğrulama başarısızsa login’i yarım başarılı sayma; güvenli yeni akış başlat.
Callback güvenliğini ve çok sekmeli giriş sorunlarını incelerken.
Üç alanı eş anlamlı kabul edip birini diğerinin yerine kullanmak.
Aynı konu. Üç farklı derinlik.
state: response ↔ initiating transactionCallback bağlamı.
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.
nonce doğru ama ID token audience yanlış. Kabul edilir mi?
Çözümü ve açıklamasını göster
Reject: all required validations must succeed.Hayır. Tek alan diğer doğrulamaları geçersiz kılmaz.