OAuth 2.0:
Modern Yetkilendirme Çerçevesi

Üçüncü taraf uygulamalara, kullanıcıların hassas kimlik bilgilerini paylaşmadan HTTP hizmetlerine sınırlı erişim sağlamak için tasarlanmış bir yetkilendirme çerçevesi.

Güvenli Yetkilendirme Kullanıcı Kontrolü Standart API Erişimi

Yaygın Kullanım

Google, Facebook, Microsoft gibi büyük teknoloji şirketleri tarafından benimsenen endüstri standardı.

Güvenlik

Kullanıcı şifrelerini paylaşmadan güvenli erişim sağlar, veri ihlali riskini azaltır.

Çoklu Platform

Web, mobil, masaüstü ve akıllı cihazlar gibi geniş bir cihaz yelpazesini destekler.

OAuth 2.0'a Giriş ve Temel Kavramlar

OAuth 2.0 Nedir?

OAuth 2.0, üçüncü taraf uygulamalara, kaynak sahibinin kimlik bilgilerini (örneğin, kullanıcı adı ve şifre) paylaşmadan, HTTP hizmetlerine sınırlı erişim sağlamak için bir yetkilendirme çerçevesidir [8] [310]. Bu, kaynak sahibi adına hareket eden bir istemci uygulamasının, kaynak sahibinin onayıyla veya kendi adına korunan kaynaklara erişmesine olanak tanır.

Önemli Hatırlatma

OAuth 2.0 bir yetkilendirme protokolüdür, kimlik doğrulama (authentication) yerine yetkilendirme (authorization) sağlar. "Google ile Giriş Yap" gibi düğmeler OAuth 2.0 kullanır [1] [117].

Temel Terminoloji

Terim Tanım Önem
Kaynak Sahibi Erişim izni veren kullanıcı veya varlık GDPR ve LOPDGDD gibi düzenlemelerle uyumluluk için kritik
İstemci Kaynak sahibi adına korunan kaynaklara erişim isteyen uygulama Web, mobil, masaüstü uygulamaları olabilir
Yetkilendirme Sunucusu Kaynak sahibinin kimliğini doğrulayan ve erişim belirteçleri veren sunucu Kimlik doğrulama sürecini yönetir
Kaynak Sunucusu Korunan kaynakları barındıran sunucu İstemciden gelen istekleri alır ve doğrular
Erişim Belirteci Kaynaklara erişmek için geçici kimlik bilgisi Ortalama geçerlilik süresi: 1 saat

OAuth 2.0 Yetkilendirme Türleri

Yetkilendirme Kodu

Sunucu taraflı web uygulamaları için önerilen ve en güvenli kabul edilen akıştır. PKCE ile birlikte mobil ve SPA'lar için de kullanılır.

OAuth 2.1'de destekleniyor

İstemci Kimlik Bilgileri

Makineden makineye (M2M) iletişim için idealdir. Kullanıcı etkileşimi olmadan, istemcinin kendi adına erişim sağlamasını sağlar.

OAuth 2.1'de destekleniyor

Cihaz Kodu

Giriş imkanı kısıtlı cihazlar (akıllı TV'ler, yazıcılar) için tasarlanmıştır. Kullanıcı başka bir cihaz üzerinden kimlik doğrulaması yapar.

OAuth 2.1'de destekleniyor

Örtük Akış

Erişim belirteçlerini doğrudan tarayıcıya gönderir. Güvenlik riskleri nedeniyle OAuth 2.1 ile kullanımdan kaldırılmıştır.

OAuth 2.1'de KALDIRILDI

Yetkilendirme Kodu Akışı

sequenceDiagram User->>Client: Uygulamayı başlatır Client->>Authorization Server: Yetkilendirme isteği gönderir (client_id, redirect_uri, response_type=code, state, [PKCE]) Authorization Server->>User: Kimlik doğrulama ve onay ister User->>Authorization Server: Kimlik bilgilerini girer ve onay verir Authorization Server->>Client: Yetkilendirme kodunu yönlendirme URI'sine gönderir Client->>Authorization Server: Belirteç isteği gönderir (code, client_id, client_secret, redirect_uri, [PKCE code_verifier]) Authorization Server->>Client: Erişim belirteci ve yenileme belirtecini döner Client->>Resource Server: Erişim belirteci ile kaynak isteği yapar Resource Server->>Client: İstenen kaynağı döner

OAuth 2.0 Belirteçleri

Erişim Belirteci

İstemcinin korunan kaynaklara erişmek için kullandığı geçici kimlik bilgisi.

  • • Genellikle 1 saat geçerlilik süresi
  • • Taşıyıcı belirteç olarak kullanılır
  • • JWT formatında olabilir

Yenileme Belirteci

Erişim belirteçlerinin ömrünü uzatmak için kullanılan uzun ömürlü kimlik bilgisi.

  • • HSM'lerde güvenli saklanmalı
  • • Kullanıcının yeniden giriş yapmasını önler
  • • OAuth 2.1'de rotasyon önerilir

Kimlik Belirteci

OpenID Connect ile gelen, kullanıcı kimliği hakkında talep içeren JWT.

  • • sub, iss, aud talepleri içerir
  • • Kimlik doğrulama sağlar
  • • Profil bilgilerini taşır

JWT (JSON Web Token) Yapısı

HEADER.PAYLOAD.SIGNATURE
Başlık (Header)

Belirteç türünü ve kullanılan imzalama algoritmasını belirtir (ör: alg: "RS256")

Yük (Payload)

Kullanıcı bilgilerini ve belirtecin sona erme süresi gibi talepleri içerir

İmza (Signature)

Belirtecin bütünlüğünü ve göndericinin kimliğini doğrulamak için kullanılır

Güvenlik Yönleri ve En İyi Uygulamalar

Yaygın Saldırı Vektörleri

  • Token Hijacking: Yetkilendirme kodunun veya erişim belirtecinin ele geçirilmesi [215]
  • CSRF Saldırıları: State parametresi olmadan yetkilendirme isteği sahteciliği [216]
  • Açık Yönlendirme: Yönlendirme URI'lerinin yeterince doğrulanmaması [273]
  • Clickjacking: Kullanıcı arayüzü giydirme saldırıları [224]

Güvenlik Önlemleri

  • PKCE: Kod değişimi için kanıt anahtarı, yetkilendirme kodunun kötüye kullanılmasını önler [216]
  • State Parametresi: CSRF saldırılarına karşı koruma sağlar [219]
  • JWT İmzalama: Belirteçlerin bütünlüğünü ve kaynağını doğrular [270]
  • HTTPS: Tüm OAuth iletişimleri şifrelenmiş kanal üzerinden yapılmalı [268]

OAuth 2.1: Güvenlik Güncellemeleri

OAuth 2.1, OAuth 2.0'ın güvenlik açıklarını gidermek ve en iyi uygulamaları standartlaştırmak amacıyla geliştirilen bir güncellemedir [346].

Önemli Değişiklikler:

  • PKCE Zorunlu: Tüm yetkilendirme kodu akışları için
  • Örtük Akış Kaldırıldı: Güvenlik riskleri nedeniyle
  • ROPC Kaldırıldı: Parola paylaşımını gerektirdiği için
  • Kesin URI Eşleşme: Açık yönlendirme zafiyetlerini önler
  • Yenileme Belirteci Rotasyonu: Güçlü şekilde önerilir
Kilit ve anahtar simgeleriyle temsil edilen güvenlik güncellemesi

OAuth 2.0 vs OAuth 2.1 Karşılaştırması

Özellik OAuth 2.0 OAuth 2.1 Güvenlik Etkisi
PKCE Kullanımı Genel istemciler için önerilir Tüm akışlar için ZORUNLU Yetkilendirme kodu ele geçirme saldırılarını önler
Örtük Akış Desteklenir KALDIRILDI Tarayıcıda belirteç sızıntısı riskini ortadan kaldırır
Yönlendirme URI Esnek eşleştirme KESİN DİZE EŞLEŞMESİ Yönlendirme manipülasyonuyla belirteç hırsızlığını önler
Yenileme Rotasyonu İsteğe bağlı GÜÇLÜ ŞEKİLDE ÖNERİLİR Belirteç yeniden kullanım saldırılarını önler

İşletme Perspektifi

İş Değeri

OAuth 2.0, güvenli API erişimi sağlayarak B2B SaaS uygulamalarında entegrasyon pazar yerleri oluşturmayı kolaylaştırır.

  • • Parola paylaşımını ortadan kaldırır
  • • İnce taneli izinler sağlar
  • • Müşteri memnuniyetini artırır

API Güvenliği

API benimseme oranında %72'lik büyümeyle, OAuth 2.0 koruma ve kullanıcı deneyimi dengesini sağlar.

  • • Sıfır Güven entegrasyonu
  • • Kısa ömürlü belirteçler
  • • Yetkisiz erişim riskini azaltır

Kullanım Senaryoları

Sosyal medya entegrasyonları, ödeme ağ geçitleri, kurumsal uygulamalar ve IoT cihazlarında yaygın kullanım.

  • • Tek tıkla giriş deneyimi
  • • Çapraz platform uyumluluğu
  • • Standartlaştırılmış entegrasyon

OAuth 2.0'ın İşletmelere Sağladığı Faydalar

Kullanıcılar İçin

  • • Düzinelerce şifreyi hatırlama zorunluluğu olmadan tek tıkla hızlı erişim
  • • Hassas kimlik bilgilerini paylaşmadan güvenli giriş
  • • Verileri ve erişim düzeyi üzerinde tam kontrol
  • • İzinleri istedikleri zaman iptal edebilme

İşletmeler İçin

  • • Daha yüksek kayıt oranları ve daha az işlem terki
  • • Kimlik doğrulama yükünü güvenilir hizmetlere devretme
  • • Maliyetleri düşürürken güvenliği artırma
  • • Ekosistemler ve pazar yerleri oluşturma imkanı

"Audi'nin dijital dönüşüm projesinde, OAuth 2.0 ve OpenID Connect kullanarak müşterilere ve bayilere çeşitli hizmetler sunabilmek için yüksek düzeyde güvenli bir yetkilendirme mekanizması uygulandı."

Kaynak: [114]

Sonuç

OAuth 2.0, modern dijital uygulamalar için vazgeçilmez bir yetkilendirme çerçevesidir. Kullanıcıların hassas kimlik bilgilerini paylaşmadan güvenli erişim sağlaması, işletmelerin API güvenliği ve entegrasyon ihtiyaçlarını karşılamada kritik bir rol oynar.

Güvenlik

Kullanıcı şifrelerini korurken güvenli erişim sağlar

Kontrol

Kullanıcılar verileri ve erişim düzeyi üzerinde tam kontrole sahiptir

Standart

Endüstri çapında kabul görmüş, yaygın olarak uygulanan bir protokol

OAuth 2.1'e Geçiş

OAuth 2.1 ile birlikte güvenlik en iyi uygulamalarının zorunlu hale getirilmesi, geliştiricilerin daha güvenli uygulamalar oluşturmasını sağlayacaktır. PKCE'nin zorunlu kılınması, örtük akışın kaldırılması gibi iyileştirmeler, OAuth'ın gelecekteki güvenlik standartlarını belirleyecektir.

OAuth 2.1 Taslak Sürüm: Mayıs 2024