OAuth 2.0, birden fazla yetkilendirme modu sunar; bunlar arasında en yaygın kullanılan ve güvenli olanı Yetkilendirme Kodu Vermesidir. code_challenge, bu modda güvenlik açısından geliştirilmiş bir özellik olup, esas olarak PKCE (Kod Değişimi İçin Kanıt Anahtarı) mekanizması için kullanılır.
PKCE nedir?
PKCE (Kod Değişimi İçin Proof Anahtar), özellikle JavaScript uygulamaları veya tarayıcılarda çalışan mobil uygulamalar gibi kamuya açık istemcilerde kullanıldığında, OAuth 2.0 yetkilendirme kodu deseninin güvenliğini artırmak için tasarlanmış bir uzantıdır. PKCE, yetkilendirme taleplerine ek bir kimlik doğrulama adımı ekleyerek yetkilendirme kodlarının ele geçirilmesini ve kötüye kullanılmasını önler.
code_challenge Rol
code_challenge, yetkilendirme talebi aşamasında oluşturulan ve gönderilen PKCE mekanizmasının bir parçasıdır. S256 gibi bir hashing algoritması ile dönüştürülen gizli bir değere (code_verifier denir) dayanır. code_challenge'nin amacı, sonraki token talepleri için doğrudan code_verifier açığa çıkmadan doğrulama temeli sağlamaktır.
code_challenge ve code_verifier üretimi ve kullanımı
code_verifier. Nesil: code_verifier, yüksek entropili, rastgele oluşturulan bir dizidir,Karakter uzunluğu (43 ile 128 arasında). Varsayılan değer 43'tür.。
code_challenge. Nesil: code_verifier kullanılarak, code_challenge bir hashing algoritması (örneğin S256) aracılığıyla oluşturulur. S256 için code_challenge, code_verifier SHA-256 hash değerinin Base64 URL kodlamasıdır, ancak kodlamadan = dolgu karakteri çıkarılmalı ve çıktı uzunluğu 43 karakter olmalıdır (çünkü Base64 URL kodlamasından sonra her 4 karakter 3 baytı temsil eder, ancak son karakter bloğu 4 karakterden az olabilir, bu yüzden = karakter çıkarıldıktan sonra uzunluk biraz değişebilir).
Yetkilendirme isteklerinde code_challenge kullanın: Yetkilendirme talebi başlatıldığında, code_challenge istek parametrelerinden biri olarak yetkilendirme sunucusuna gönderilir.
Token isteklerinde code_verifier kullanımı: Yetkilendirme sunucusu yetkilendirme kodunu döndürdüğünde, istemci bu kodu ve önceden oluşturulan code_verifier kullanarak token uç noktasına erişim talep eder. Yetkilendirme sunucusu, code_challenge ve code_verifier eşleşip eşleşmediğini doğrular ve isteğin orijinal istemci tarafından başlatıldığından önlenir.
PKCE üretimi
Çevrimiçi PKCE Üretim Araçları:Bağlantı girişi görünür.
C# kodu şu şekilde oluşturulur:
Aşağıda gösterildiği gibi:
Referans:
Bağlantı girişi görünür.
Bağlantı girişi görünür. |