OpenID Connect Talepleri ve ID Belirteçleri
JWT tabanlı ID belirteçlerinin kodunu çözün, talep doğrulamasını anlayın ve OIDC'yi doğru şekilde uygulayın.
OpenID Connect Talepleri ve ID Belirteçleri, CoddyKit'te ücretsiz bir Cryptology Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Cryptology Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cryptology Academy kursu toplamda 4 dersten oluşur.
Kimlik Katmanı Olarak OIDC
OpenID Connect (OIDC), OAuth 2.0'ın üzerine bir kimlik katmanı ekler. OAuth 2.0 yetkilendirmeyi (bu uygulama neye erişebilir?) yönetirken OIDC kimlik sorusunu (kullanıcı kimdir?) yanıtlar. OIDC, bir OAuth 2.0 isteğine "openid" kapsamı eklenerek uygulanır; bu işlem, yetkilendirme sunucusunun erişim belirtecinin yanında bir ID belirteci de döndürmesini sağlar.
JWT Olarak ID Belirteci
OIDC ID belirteci, kimliği doğrulanmış kullanıcı hakkındaki istemleri içeren bir JSON Web Belirtecidir (JWT). JWT, yetkilendirme sunucusu tarafından özel anahtarı kullanılarak (genellikle RS256 veya ES256 ile) imzalanır ve güvenen taraf (istemci uygulaması), imzayı yetkilendirme sunucusunun yayımladığı ortak anahtarları (JWKS uç noktası) kullanarak doğrular.
Standart ID Belirteci İstemleri
Zorunlu ve yaygın kullanılan ID belirteci istemleri: "sub" (subject, benzersiz kullanıcı tanımlayıcısı), "iss" (issuer, yetkilendirme sunucusunun URL'si), "aud" (audience, istemci kimliği), "exp" (expiration Unix zaman damgası), "iat" (düzenlenme zamanı Unix zaman damgası). İsteğe bağlı olanlar: "auth_time" (kimlik doğrulamasının gerçekleştiği zaman), "nonce" (tekrar oynatma saldırılarını önleme), "at_hash" (erişim belirtecinin özeti), "acr" (kimlik doğrulama bağlamı sınıfı), "amr" (kullanılan kimlik doğrulama yöntemleri).
UserInfo Uç Noktası
OIDC UserInfo uç noktası, geçerli bir erişim belirteciyle çağrıldığında kimliği doğrulanmış kullanıcı hakkında ek istemler döndürür. İstemciler, belirli istem kümelerini kapsamlar aracılığıyla ister: "profile" (ad, resim, yerel ayar), "email" (e-posta, e-posta doğrulama durumu), "address" (biçimlendirilmiş adres), "phone" (telefon numarası, telefon numarası doğrulama durumu). UserInfo yanıtı bir JSON nesnesi veya JWT'dir.
ID Belirtecini Doğrulama: İmza
ID belirteci doğrulaması imza doğrulamayla başlar. İstemci, yetkilendirme sunucusunun JWKS'sini (JSON Web Anahtar Kümesi) iyi bilinen uç noktadan alır, JWT üst bilgisinin "kid" (anahtar kimliği) parametresiyle eşleşen anahtarı bulur ve JWT imzasını doğrular. Bu, belirtecin meşru yetkilendirme sunucusu tarafından düzenlendiğini ve üzerinde oynama yapılmadığını kanıtlar.
İstemleri Doğrulama: iss, aud, exp
İmza doğrulamasından sonra istemci şunları doğrulamalıdır: "iss", beklenen yetkilendirme sunucusu URL'siyle tam olarak eşleşmelidir (şema ve yol dahil). "aud", istemcinin kendi client_id değerini içermelidir. "exp" gelecekte olmalıdır (süresi dolmuş belirteçler reddedilmelidir). "iat" makul ölçüde yakın bir zamanı göstermelidir. OIDC belirtimine göre bu dört denetimin tümü zorunludur.
Tekrar Oynatmayı Önlemek İçin Nonce
Nonce istemi, ID belirtecinin tekrar oynatılması saldırılarını önler. İstemci rastgele bir nonce oluşturur ve bunu yetkilendirme isteğine ekler. Yetkilendirme sunucusu nonce değerini ID belirtecine yerleştirir. İstemci, ID belirtecindeki nonce değerinin gönderdiği değerle eşleştiğini doğrular. Bu, bir ID belirtecini ele geçiren saldırganın bu belirteci farklı bir oturumda kimlik doğrulamak için tekrar kullanmasını önler.
Örtük Akıştaki ID Belirteci Zayıflıkları
OIDC örtük akışı kullandığında (response_type=id_token), ID belirteci doğrudan URL parçasında döndürülür. İstemci, erişim belirtecini ID belirtecine bağlamak için at_hash değerini (erişim belirtecinin özetini) doğrulamalıdır. at_hash doğrulaması yapılmazsa erişim belirtecini değiştirme saldırıları mümkün olur. Örtük akışın kullanımdan kaldırılmasının bir başka nedeni de budur.
OIDC Kapsamları ve İstemleri
OIDC, standart kapsam-istem eşlemelerini tanımlar. "openid" kapsamı zorunludur ve "sub" istemini döndürür. "profile"; name, given_name, family_name, nickname, picture, website, locale, zoneinfo ve updated_at değerlerini döndürür. "email", email ve email_verified değerlerini döndürür. Gereksiz kapsamları istemek, asgari açıklama ilkesini ihlal eder ve hassas kullanıcı verilerini açığa çıkarabilir.
Kötücül Sağlayıcılar Aracılığıyla İstem Enjeksiyonu
OIDC çok sağlayıcılı oturum açma özelliği uygulanırken (örneğin "Google ile oturum aç" ve "GitHub ile oturum aç"), istem enjeksiyonu saldırıları mümkün olabilir. Saldırgan, Sağlayıcı B'de Sağlayıcı A'yı kullanan bir kurbanın e-posta adresiyle hesap oluşturursa uygulama hesapları yalnızca e-posta istemine göre eşleştirdiğinde erişim elde edebilir. Hesapları her zaman yalnızca e-postaya göre değil, (iss, sub) çiftiyle eşleştirin.
Hibrit Akışın Kullanım Alanları
OIDC hibrit akışı (response_type=code id_token), yetkilendirme uç noktasından hem bir yetkilendirme kodu hem de bir ID belirteci döndürür. ID belirteci anında kimlik doğrulamaya olanak tanırken kod, arka kanal üzerinden belirteçlerle değiştirilir. Bu akış, istemcinin arka kanal belirteç değişimini tamamlamadan önce kullanıcı bilgilerini hemen görüntülemesi gerektiğinde kullanılır.
ID Belirteci Doğrulama Denetimi
Bir güvenen taraf, OIDC ID belirtecinde hangi istem birleşimini doğrulamalıdır?
Ders Özeti: OIDC İstemleri ve ID Belirteçleri
OIDC, OAuth 2.0 akışlarına imzalı bir JWT ID belirteci ekler. İmzayı (JWKS), iss değerini (tam eşleşme), aud değerini (client_id), exp değerini (süresi dolmamış olmalı) ve gönderilmişse nonce değerini doğrulayın. UserInfo uç noktası, kapsamlar aracılığıyla ek istemler sağlar. İstem enjeksiyonunu önlemek için hesapları hiçbir zaman yalnızca e-postaya göre değil, (iss, sub) çiftiyle eşleştirin. Örtük akış kullanımdan kaldırılmıştır; OIDC için PKCE içeren yetkilendirme kodu akışını kullanın.
Sıkça Sorulan Sorular
“OpenID Connect Talepleri ve ID Belirteçleri” dersi ücretsiz mi?
Evet — “OpenID Connect Talepleri ve ID Belirteçleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Cryptology Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cryptology Academy kursu toplamda 4 dersten oluşur.
“OpenID Connect Talepleri ve ID Belirteçleri” dersinde ne öğreneceğim?
JWT tabanlı ID belirteçlerinin kodunu çözün, talep doğrulamasını anlayın ve OIDC'yi doğru şekilde uygulayın. Cryptology Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Cryptology Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Cryptology Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“OpenID Connect Talepleri ve ID Belirteçleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Cryptology Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Cryptology Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- OAuth 2.0 Akışları ve Belirteç Türleri
- PKCE: Genel İstemcileri Güvenceye Alma
- OpenID Connect Talepleri ve ID Belirteçleri
- OAuth Güvenlik Açıkları ve Saldırı Kalıpları