# OAuth

Adres: https://softwaredictionary.org/tr/terimler/oauth
Kategori: Güvenlik
Son güncelleme: 2026-09-29
Okunuşu: o-ot

Kısaca: OAuth, bir uygulamanın kullanıcının parolasını hiç görmeden başka bir servisteki verilerine erişmesini sağlayan açık bir yetkilendirme standardıdır.

## OAuth nedir?

OAuth yaygın bir sorunu çözer: bir zamanlama aracı gibi bir uygulamanın, takvim hesabınız gibi başka bir serviste tutulan verilere erişmesi gerekir, ama parolanızı vermemelisiniz. OAuth ile verinizi tutan servise doğrudan giriş yaparsınız, kapsam (scope) adı verilen belirli izinleri onaylarsınız ve uygulama yalnızca bu izinlerle sınırlı bir erişim token'ı alır.

Kullanımdaki sürüm OAuth 2.0'dır; OAuth 2.1 ise güncel en iyi uygulamaları bir araya getirir. Web ve mobil uygulamalar için önerilen akış, PKCE'li authorization code akışıdır: uygulama sizi yetkilendirme sunucusuna yönlendirir, siz giriş yapıp onay verirsiniz, sunucu kısa ömürlü bir kodla geri yönlendirir ve uygulama bu kodu, çoğunlukla bir refresh token'la birlikte, erişim token'ıyla değiştirir. Uygulama daha sonra erişim token'ını API'ye gönderir; API veriyi döndürmeden önce onu denetler.

Otel oda kartı iyi bir benzetmedir. Resepsiyon, yani yetkilendirme sunucusu, kimliğinizi bir kez kontrol eder ve size yalnızca belirli kapıları sınırlı süre açan bir kart verir; API gibi kapılar yalnızca kartı kontrol eder ve kimliğinizi bir daha görmesi gerekmez.

OAuth yetkilendirmeyle ilgilidir, yani bir uygulamanın ne yapmasına izin verildiğiyle; kimlik doğrulamayla, yani kullanıcının kim olduğuyla değil. Başka yerdeki mevcut bir hesapla oturum açmanızı sağlayan sosyal giriş düğmeleri genellikle OpenID Connect'e (OIDC) dayanır; OIDC, OAuth 2.0'ın üzerine kullanıcıyı tanımlayan bir ID token ekleyen bir katmandır. OAuth'u güvenle kullanmak; PKCE kullanmak, yönlendirme URL'lerini tam olarak eşleştirmek, `state` değerini denetlemek, yalnızca ihtiyacınız olan kapsamları istemek ve token'ları URL'lerden ve günlüklerden uzak tutmak demektir.

## Önemli noktalar

- OAuth, uygulamaların kullanıcı parolalarını toplamadan kaynaklara erişmesini sağlar.
- Kullanıcılar, kapsam adı verilen sınırlı izinleri onaylar.
- Uygulamalar kimlik bilgileri yerine, genellikle kısa ömürlü erişim token'ları alır.
- PKCE'li authorization code akışı önerilen akıştır.
- OpenID Connect, OAuth'un üzerine giriş (kimlik doğrulama) ekler.

## Örnek: Authorization code akışını başlatmak

```javascript
// Send the user to the authorization server to log in and consent
const params = new URLSearchParams({
  response_type: "code",            // ask for an authorization code
  client_id: "my-calendar-app",
  redirect_uri: "https://app.example.com/callback",
  scope: "calendar.read",           // only the permission that is needed
  state: savedState,                // random value, checked on return
  code_challenge: pkceChallenge,    // PKCE: protects the returned code
  code_challenge_method: "S256",
});

window.location.href = `https://auth.example.com/authorize?${params}`;

// Later, the app exchanges the returned ?code=... for an access token
```

## Sık sorulan sorular

**OAuth ile OpenID Connect arasındaki fark nedir?**

OAuth 2.0 yetkilendirme içindir: uygulamaya bir API'yi çağırması için erişim token'ı verir. OpenID Connect, OAuth'un üzerine kurulur ve kimlik doğrulama ekler; uygulamaya kullanıcının kim olduğunu söyleyen bir ID token verir.

**OAuth, JWT ile aynı şey midir?**

Hayır. OAuth, uygulamaların token'ları nasıl elde edip kullanacağını tanımlayan bir protokoldür; JWT ise bir token biçimidir. Birçok OAuth sunucusu erişim token'larını JWT olarak verir, ancak OAuth bunu zorunlu kılmaz.

**PKCE nedir?**

PKCE, Proof Key for Code Exchange'in kısaltmasıdır; authorization code akışına tek kullanımlık bir sır ekleyerek çalınan bir kodun başkası tarafından token ile değiştirilmesini engeller. Web ve mobil uygulamalar dahil tüm OAuth istemcileri için önerilir.

## Kaynaklar

- [RFC 6749: The OAuth 2.0 Authorization Framework](https://www.rfc-editor.org/rfc/rfc6749.html)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
