Ders 1.48: OAuth 2.0'ı güvenle yapmak: yönlendirme URI'leri ve PKCE
OAuth 2.0 bir uygulamanın kullanıcının parolasını hiç görmeden onun adına bir belirteç almasını sağlar: kullanıcı kimlik sağlayıcısında oturum açar, o da kayıtlı bir yönlendirme URI'sine tek kullanımlık bir kod gönderir. Gerçek saldırıların çoğu o kodu ya da belirteci çalar: özensiz bir yönlendirme URI'si, bir telefonda yakalanan bir kod ya da kullanımdan kaldırılmış bir akış üzerinden. Bugünün en iyi uygulaması (RFC 9700) kısadır: her istemci için PKCE ile yetkilendirme kodu, birebir yönlendirme URI'leri ve implicit ya da password akışı yok. Laboratuvarda kimlik sağlayıcısının istemci kayıtlarını inceliyor, bir PKCE sınamasını kendin hesaplıyor ve düzeltmeleri hazırlıyorsun.
17 dk
Bu derste öğreneceklerin
- Yetkilendirme kodu akışını açıklamak
- Yönlendirme URI'lerinin neden birebir eşleşmesi gerektiğini açıklamak
- PKCE'yi açıklamak ve bir S256 sınaması hesaplamak
- Kullanımdan kaldırılmış akışları (implicit, password) belirlemek
- İstemci kayıtlarını jq ile incelemek
Temel terimler
- OAuth 2.0 / OpenID Connect
- API'ler için erişim belirteci almaya yarayan çerçeve / üstünde kullanıcının kim olduğunu da söyleyen katman (kimlik belirteci).
- Yetkilendirme kodu
- Yönlendirme URI'sine gönderilen ve belirteçlerle takas edilen tek kullanımlık kod.
- Yönlendirme URI'si
- Kimlik sağlayıcısının kodu gönderdiği yer; kayıtlı olmalı ve birebir eşleşmeli.
- PKCE
- Kod Takası için Kanıt Anahtarı (RFC 7636): kodu kullananın oturum açmayı başlatan kişi olduğunu kanıtlayan, oturum açma başına sır.
- Herkese açık / gizli istemci
- Sır saklayamaz (mobil, tarayıcı uygulamaları) / sunucuda çalışır ve saklayabilir.
- state
- Yanıtı isteğe bağlayan rastgele değer; oturum açma CSRF'sine karşı.
← İstekler, parametreler, çerezler ve oturumlar · Tüm dersler · Kerberos, NTLM ve günlüğe yazdıkları →