0Pricing
Cyber Security Academy · Ders

OAuth 2.0 Akışları

Yetkilendirme izinleri ve belirteçleri.

OAuth 2.0 Akışları, CoddyKit'te ücretsiz bir Cyber Security Academy dersidir. Bu, 4 dersinin 1. 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, Cyber Security Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Cyber Security Academy kursu toplamda 4 dersten oluşur.

OAuth 2.0 Aslında Hangi Sorunu Çözer

OAuth 2.0, devredilmiş yetkilendirme çerçevesidir. Bir kullanıcının, parolasını paylaşmadan başka bir hizmetteki kaynaklarına sınırlı erişim iznini üçüncü taraf bir uygulamaya vermesini sağlar.

  • Bu konu, kimlik doğrulamayla (kullanıcının kim olduğu) değil, yetkilendirmeyle (bir uygulamanın neler yapabileceği) ilgilidir.
  • Uygulama, kapsamı sınırlandırılmış bir access_token alır; kullanıcı kimlik bilgilerini hiçbir zaman almaz.

Savunma ekipleri şunu unutmamalıdır: OAuth tek başına kimliği kanıtlamaz. Bir erişim belirtecini oturum açma kanıtı olarak kabul etmek, OIDC'nin ele aldığı klasik bir hatadır.

Dört Rol

Her OAuth akışı dört rol içerir. Tehdit modellemesi için bu rolleri doğru eşleştirmek çok önemlidir.

  • Kaynak Sahibi verilerin sahibi olan kullanıcıdır.
  • İstemci erişim isteyen uygulamadır.
  • Yetkilendirme Sunucusu (AS) onaydan sonra belirteç düzenler.
  • Kaynak Sunucusu (RS) korunan verileri barındıran ve belirteçleri doğrulayan API'dir.

Güven sınırları bu rollerin arasında bulunur. Ele geçirilmiş bir istemci veya aşırı izin veren bir AS, tüm zinciri zayıflatır.

Roles:
  Resource Owner  -> grants consent
  Client          -> requests + uses tokens
  Authorization Server -> issues tokens
  Resource Server -> validates tokens

Yetkilendirme Kodu Türü

Yetkilendirme Kodu türü, web ve mobil uygulamalar için önerilen akıştır. Kullanıcıya yönelik yönlendirmeyi gizli belirteç değişiminden ayırır.

  • Kullanıcı, kimlik doğrulaması yapmak ve onay vermek üzere AS'ye yönlendirilir.
  • AS, kısa ömürlü bir code değerini kayıtlı yönlendirme URI'sine gönderir.
  • İstemci, kodu arka kanal üzerinden sunucu tarafında belirteçlerle değiştirir.

Belirteçler arka kanaldan alındığı için tarayıcının adres çubuğunda veya geçmişinde hiçbir zaman görünmez.

GET /authorize?response_type=code
  &client_id=app123
  &redirect_uri=https://app.example/cb
  &scope=read:profile
  &state=xyz

// then back-channel:
POST /token  grant_type=authorization_code&code=...

PKCE: Kod Değişimi için Kanıt Anahtarı

PKCE (RFC 7636), yetkilendirme kodu türünü güçlendirir ve artık gizli istemciler de dâhil tüm istemciler için önerilir.

  • İstemci rastgele bir code_verifier oluşturur ve bunun özetini code_challenge olarak gönderir.
  • Belirteç değişimi sırasında özgün doğrulayıcıyı sunması gerekir.

Bu işlem, kodu özgün istekte bulunan tarafa bağlayarak yetkilendirme kodunu ele geçiren bir saldırganın kodu kullanıp belirteç almasını engeller.

code_verifier  = random 43-128 chars
code_challenge = BASE64URL(SHA256(verifier))

/authorize ... &code_challenge=...&code_challenge_method=S256
/token     ... &code_verifier=<original>

İstemci Kimlik Bilgileri Türü

İstemci Kimlik Bilgileri türü, hiçbir kullanıcının bulunmadığı makineler arası erişim içindir (API çağıran bir arka uç hizmeti gibi).

  • İstemci kendi kimlik bilgileriyle kimlik doğrulaması yapar ve bir erişim belirteci alır.
  • Genellikle kullanıcı onayı ve yenileme belirteci yoktur.

Bu belirteçlerin kapsamını sıkı biçimde sınırlandırın ve istemcinin gizli anahtarlarını düzenli olarak yenileyin. Son kullanıcıların kimliğine bürünmek için bu akışı hiçbir zaman kullanmayın.

POST /token
  grant_type=client_credentials
  client_id=service-a
  client_secret=***
  scope=orders:read

Erişim Belirteçleri ve Yenileme Belirteçleri Karşılaştırması

OAuth, kullanım ömürleri ve işlenme kuralları birbirinden çok farklı olan iki temel belirteç türü düzenler.

  • Erişim belirteci kısa ömürlüdür ve her çağrıda kaynak sunucusuna gönderilir. Bunu taşıyıcı kimlik bilgisi olarak kabul edin.
  • Yenileme belirteci uzun ömürlüdür ve yalnızca yeni erişim belirteçleri almak için AS'ye gönderilerek kullanılır.

Yenileme belirteçleri yüksek değer taşır. Bunları güvenli biçimde saklayın, istemciye bağlayın ve iptali destekleyin.

POST /token
  grant_type=refresh_token
  refresh_token=<long-lived>
  client_id=app123

Taşıyıcı Belirteçler ve İletim

OAuth erişim belirteçlerinin çoğu taşıyıcı belirteçtir: belirteci elinde bulunduran herkes onu nakit para gibi kullanabilir.

  • Her zaman TLS üzerinden iletin; günlük kayıtlarına ve yönlendiren başlıklarına sızabilecekleri URL'lerde asla göndermeyin.
  • Authorization başlığı aracılığıyla gönderin.
  • Yüksek riskli API'ler için gönderici kısıtlamalı belirteçleri (DPoP, mTLS) değerlendirin.
Authorization: Bearer eyJhbGciOiJSUzI1NiIs...

// AVOID:
GET /api/data?access_token=...   // leaks in logs

Örtük Yetkilendirme Akışı Kullanımdan Kaldırıldı

Eski Örtük yetkilendirme akışı, belirteçleri doğrudan yönlendirme URI'sinin parçasında döndürüyordu. OAuth 2.0 Güvenlik BCP'si tarafından artık önerilmemekte ve OAuth 2.1'de kaldırılmış durumdadır.

  • Belirteçler tarayıcı geçmişi, yönlendiren başlıkları ve günlük kayıtları üzerinden sızıyordu.
  • Arka kanalın olmaması, istemci kimlik doğrulamasını zayıflatıyordu.

Bunun yerine SPA uygulamaları için PKCE ile Yetkilendirme Kodu akışını kullanın.

state Parametresi ve CSRF

state parametresi, yönlendirme adımını CSRF'ye karşı korur. İstemci rastgele bir değer üretir, bu değeri oturumda saklar ve geri çağrı sırasında doğrular.

  • Geri dönen state eşleşmiyorsa yanıtı reddedin.
  • Bu, saldırganın kendi yetkilendirme kodunu kurbanın oturumuna eklemesini önler.
before:  session.state = randomNonce()
/authorize ... &state=<nonce>

on callback:
  if (req.state !== session.state) reject()

Kapsamlar ve En Az Ayrıcalık

Kapsamlar, bir belirtecin sağladığı erişimin ayrıntı düzeyini ifade eder. Her adımda en az ayrıcalık ilkesini uygulayın.

  • Yalnızca özelliğin ihtiyaç duyduğu kapsamları isteyin (admin yerine read:profile).
  • Kaynak sunucuları kapsamı yalnızca geçerli bir belirtece güvenmekle kalmayıp her uç noktada zorunlu kılmalıdır.

Aşırı geniş kapsam onayı, gerçek dünyada sık karşılaşılan bir risktir: kullanıcılar gerekenden çok daha fazlasını isteyen uygulamaları onaylar.

Yaygın OAuth Yanlış Yapılandırmaları

OAuth olaylarının çoğu protokolün kendisinden değil, yapılandırmadan kaynaklanır.

  • Açık yönlendirme / gevşek redirect_uri eşleştirmesi saldırganların kodları çalmasına olanak tanır.
  • Eksik state veya PKCE, CSRF'yi ve kod eklemeyi mümkün kılar.
  • Geri alma mekanizması olmayan, uzun ömürlü erişim belirteçleri.
  • Erişim belirtecini kimlik doğrulama kanıtı olarak ele almak.

Kesin yönlendirme URI'lerini kaydedin ve bunları sıkı biçimde doğrulayın.

redirect_uri allowlist:
  EXACT: https://app.example/cb
  NOT:   https://app.example/*  (too broad)

Hızlı Kontrol: SPA Kimlik Doğrulamasını Güvence Altına Alma

Aşağıdaki senaryo için doğru ve modern akışı seçin.

Özet: OAuth 2.0 Akışları

Temel çıkarımlar:

  • OAuth 2.0, kimlik doğrulama değil, yetkilendirmenin devredilmesidir.
  • Dört rol vardır: kaynak sahibi, istemci, yetkilendirme sunucusu ve kaynak sunucusu.
  • Yetkilendirme Kodu + PKCE, web, mobil ve SPA uygulamaları için varsayılan akıştır.
  • İstemci Kimlik Bilgileri, makineler arası erişimi kapsar.
  • state, kesin yönlendirme URI'si eşleştirmesi, kısa ömürlü erişim belirteçleri ve her yerde TLS kullanarak koruma sağlayın.
  • Örtük ve Parola yetkilendirme akışları kullanımdan kaldırılmıştır.

Sıkça Sorulan Sorular

“OAuth 2.0 Akışları” dersi ücretsiz mi?

Evet — “OAuth 2.0 Akışları” 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 Cyber Security Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Cyber Security Academy kursu toplamda 4 dersten oluşur.

“OAuth 2.0 Akışları” dersinde ne öğreneceğim?

Yetkilendirme izinleri ve belirteçleri. Cyber Security 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.

Cyber Security Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Cyber Security 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 1. dersidir.

“OAuth 2.0 Akışları” 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 Cyber Security Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Cyber Security 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

  1. OAuth 2.0 Akışları
  2. OpenID Connect (OIDC)
  3. SAML ve Federasyon
  4. Belirteç Saldırıları ve Sağlamlaştırma
← Cyber Security Academy Sayfasına Dön