OAuth nedir?
OAuth, bir uygulamanın kullanıcının parolasını öğrenmeden, onun adına başka bir servisteki belirli verilere sınırlı erişim almasını sağlayan yetkilendirme çerçevesidir. Kullanıcı izin verir, servis uygulamaya kısa ömürlü bir erişim jetonu (access token) verir. Parola uygulamayla hiç paylaşılmaz.
Örneğin bir uygulamaya ‘Google ile bağlan’ dediğinizde, uygulama parolanızı değil yalnızca izin verdiğiniz kapsamdaki erişimi alır. Sık kullanılan sürüm OAuth 2.0’dır.
Nasıl çalışır?
Süreçte dört rol vardır: kaynak sahibi (kullanıcı), istemci (uygulama), yetkilendirme sunucusu ve kaynak sunucusu. Tipik akışta uygulama kullanıcıyı yetkilendirme sunucusuna yönlendirir, kullanıcı izin verir ve sunucu uygulamaya bir kod gönderir. Uygulama bu kodu jetonla takas eder ve jetonu kaynak sunucuya sunarak veriye erişir.
Jetonlar sınırlı kapsam (scope) ve ömre sahiptir. Yenileme jetonu (refresh token) ile kullanıcıdan yeniden izin istemeden yeni erişim jetonu alınabilir. OAuth kimlik doğrulama için tasarlanmamıştır; bunun için üzerine kurulan OpenID Connect kullanılır.
Sunucu ve hosting ortamında
Kendi uygulamanıza sosyal giriş ekliyorsanız ya da üçüncü taraf API’lere (e-posta, bulut depolama, ödeme) bağlanıyorsanız OAuth ile karşılaşırsınız. Gizli istemci anahtarları (client secret) sunucuda tutulmalı, ortam değişkeni veya gizli bilgi yöneticisiyle saklanmalı, kaynak koduna yazılmamalıdır.
WordPress eklentileri, CI/CD araçları ve izleme servisleri de sıklıkla OAuth ile bağlanır. Verdiğiniz izinlerin kapsamını gözden geçirmek ve kullanılmayan bağlantıları iptal etmek önemlidir.
Nasıl uygulanır?
- Yetkilendirme kodu akışını (tercihen PKCE ile) kullanın; eski örtük akıştan kaçının.
- Yönlendirme (redirect) adreslerini tam eşleşmeyle kayıt edin.
- State parametresi kullanarak CSRF saldırılarını önleyin.
- Yalnızca gereken kapsamları isteyin.
- Erişim jetonlarını kısa ömürlü tutun, istemci sırrını açığa çıkarmayın.
- Kullanılmayan uygulama izinlerini düzenli olarak iptal edin.
Sık yapılan hatalar
- Gizli anahtarı mobil uygulama veya tarayıcı koduna gömmek.
- Gereğinden geniş kapsam istemek.
- Redirect adreslerinde joker kullanmak.
- OAuth’u tek başına kimlik doğrulama sanmak.
Sık sorulan sorular
OAuth ne işe yarar?
Bir uygulamaya parolanızı vermeden, belirli verilere sınırlı ve geri alınabilir erişim tanımanızı sağlar.
OAuth ile OpenID Connect arasındaki fark nedir?
OAuth yetkilendirme, yani erişim izni içindir. OpenID Connect ise OAuth’un üzerine kimlik doğrulama katmanı ekler ve kullanıcının kim olduğunu bildiren bir kimlik jetonu sunar.
Access token çalınırsa ne olur?
Jetonu ele geçiren, ömrü ve kapsamı dahilinde o erişimi kullanabilir. Bu nedenle jetonlar kısa ömürlü olmalı, şifreli kanal üzerinden iletilmeli ve şüphe durumunda iptal edilmelidir.
İlgili terimler
- Parola özeti (hash)Parolanın geri döndürülemez biçimde saklanan matematiksel özeti.
- Parola yöneticisiParolaları şifreli bir kasada saklayan, güçlü ve benzersiz parolalar üreten ve otomatik dolduran uygulama.
- Passkey (parolasız kimlik doğrulama)Parola yerine cihazdaki açık anahtar kriptografisini kullanan, kimlik avına dayanıklı oturum açma yöntemi.
- RBAC (rol tabanlı erişim kontrolü)Kullanıcılara tek tek yetki vermek yerine, görevlere karşılık gelen rollere yetki atayıp kullanıcıları rollere bağlayan erişim modeli.
- rootLinux/Unix sistemlerinde sınırsız yetkiye sahip yönetici hesabı.
- SSH anahtarıParola yerine kullanılan, açık/özel anahtar çiftine dayalı giriş yöntemi.