COMPUTER ENGINEER

Örneklere git
Blog
HTTP / HTTPS / TLS6 dk çalışma
45/ 70

OAuth 2.0, OIDC ve PKCE

state, nonce ve PKCE: neden üçü var?

Callback bağlama, token replay ve code interception ayrı tehditlerdir.

AnlaÖrneği inceleKendin uygula

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.

NERESİNDE KULLANIRSIN?

Callback güvenliğini ve çok sekmeli giriş sorunlarını incelerken.

SIK YAPILAN HATA

Üç alanı eş anlamlı kabul edip birini diğerinin yerine kullanmak.

01 / UYGULAMA

Aynı konu. Üç farklı derinlik.

HTTP / temsili örnek
state: response ↔ initiating transaction

Callback 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.

02 / SIRA SENDE

Önce kendin dene.

nonce doğru ama ID token audience yanlış. Kabul edilir mi?

Çözümü ve açıklamasını göster
Açıklamalı çözüm
Reject: all required validations must succeed.

Hayır. Tek alan diğer doğrulamaları geçersiz kılmaz.