[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"glossary-oauth::tr":3,"gloss-cluster-oauth::tr":20,"gloss-next-oauth::tr":9},{"slug":4,"category":5,"name":6,"definition":7,"meta_desc":8,"faq":9,"schema_markup":9,"related":10},"oauth","saas","OAuth","OAuth (günümüzde OAuth 2.0) bir kullanıcının, şifresini hiç paylaşmadan, bir uygulamaya başka bir uygulamadaki verilerine sınırlı ve kapsamı belirlenmiş erişim izni vermesini sağlayan açık bir yetkilendirme protokolüdür. Her \"Google ile giriş yap\", \"Slack'ini bağla\" veya \"Bu uygulamanın Gmail'ine erişmesine izin ver\" akışının arkasındaki protokol budur. OAuth temelde yetkilendirmeyle (bir uygulamanın ne yapmasına izin verildiğiyle) ilgilidir; bu, kimlik doğrulamadan (bir kullanıcının kim olduğunu kanıtlamaktan) tamamen farklı bir kavramdır — yine de OpenID Connect (OIDC), OAuth 2.0'ın üzerine kimlik doğrulama katmanı ekler, bu yüzden \"Google ile giriş yap\" akışları özellikle OIDC kullanır. SaaS geliştiricilerinin üçüncü taraf API'lerle entegrasyonunda en çok karşılaştığı standart OAuth 2.0 \"Authorization Code\" akışı şöyle işler: uygulamanız kullanıcıyı, istenen bir `scope` (örn. `read:calendar`) ile sağlayıcının yetkilendirme URL'sine yönlendirir; kullanıcı isteği sağlayıcının kendi onay ekranında onaylar; sağlayıcı, uygulamanıza tek kullanımlık bir yetkilendirme `code`'u ile geri yönlendirir; backend'iniz bu kodu (uygulamanızın client secret'ıyla birlikte) bir `access_token` ve bir `refresh_token` ile değiştirir; uygulamanız sonrasında her API çağrısında `Authorization: Bearer {token}` başlığına access token'ı ekler ve eskisi süresi dolduğunda (genellikle 1 saat sonra) yeni bir access token almak için refresh token'ı kullanır. Somut örnek: bir randevu SaaS'ı, kullanıcının müsaitlik durumunu kontrol etmek için Google Takvim'ini okumak istiyor. Kullanıcıyı `https:\u002F\u002Faccounts.google.com\u002Fo\u002Foauth2\u002Fv2\u002Fauth?client_id=...&scope=https:\u002F\u002Fwww.googleapis.com\u002Fauth\u002Fcalendar.readonly&response_type=code&redirect_uri=https:\u002F\u002Fyourapp.com\u002Foauth\u002Fcallback` adresine yönlendiriyor. Kullanıcı onaylıyor; Google, `https:\u002F\u002Fyourapp.com\u002Foauth\u002Fcallback?code=4\u002F0AY0e-g7...` adresine yönlendiriyor; backend'iniz bu kodu Google'ın token endpoint'ine POST ediyor ve karşılığında `{\"access_token\": \"ya29...\", \"refresh_token\": \"1\u002F\u002F0g...\", \"expires_in\": 3599}` alıyor. Uygulamanız refresh token'ı şifrelenmiş olarak saklar ve access token süresi dolana kadar Takvim API'sini bu tokenla çağırır, sonra sessizce yeniler. OAuth token saklamayı, yenileme mantığını ve scope'u minimumda tutmayı doğru yapmak, SaaS entegrasyonlarında yaygın bir güvenlik açığı kaynağıdır — sızan refresh token'lar, kullanıcının bağlı hesabına kalıcı bir arka kapı açmakla eşdeğerdir; bu yüzden olgun implementasyonlar token'ları saklarken şifreler, her isteği gerçekten gereken minimum izinle sınırlar (salt okunur takvim erişimi yeterliyken asla geniş kapsamlı \"tam hesap erişimi\" istemez) ve token iptalini destekler, böylece bir kullanıcı entegrasyonun bağlantısını kestiğinde sadece bir arayüz düğmesini gizlemek yerine saklanan kimlik bilgileri gerçekten geçersiz kılınır. Bilinmesi gereken daha yeni spesifikasyonler — artık sunucu tarafı akışlar da dahil tüm OAuth akışları için önerilen PKCE (Proof Key for Code Exchange) ve TV'ler, CLI'lar ve diğer giriş kısıtlı cihazlar için kullanılan device authorization grant — temel OAuth 2.0 akışını genişleterek belirli güvenlik açıklarını kapatır veya standart bir tarayıcı yönlendirmesini işleyemeyen istemcileri destekler; herkese açık bir geliştirici platformu inşa eden herhangi bir SaaS ürünü, PKCE'yi sadece mobil için değil varsayılan olarak uygulamalıdır.","OAuth, kullanıcının şifresini paylaşmadan bir uygulamaya başka uygulamadaki verilerine sınırlı erişim vermesini sağlayan protokoldür.",null,[11,14,17],{"slug":12,"name":13},"api-first","API-First (API Öncelikli)",{"slug":15,"name":16},"sso","Tek Oturum Açma (SSO)",{"slug":18,"name":19},"webhook","Webhook",[21,25,29,32,33,36,39,43,46,49,52,55],{"slug":22,"category":5,"name":23,"updated_at":24},"activation","Aktivasyon","2026-08-24T02:46:36+00:00",{"slug":26,"category":5,"name":27,"updated_at":28},"aha-moment","Aha Anı","2026-08-24T02:46:37+00:00",{"slug":30,"category":5,"name":31,"updated_at":28},"annual-contract-value","Yıllık Sözleşme Değeri (ACV)",{"slug":12,"category":5,"name":13,"updated_at":24},{"slug":34,"category":5,"name":35,"updated_at":24},"arpa","Hesap Başına Ortalama Gelir (ARPA)",{"slug":37,"category":5,"name":38,"updated_at":24},"arr","Yıllık Yinelenen Gelir (ARR)",{"slug":40,"category":5,"name":41,"updated_at":42},"auto-renewal-clause","Otomatik Yenileme Maddesi","2026-08-24T02:46:38+00:00",{"slug":44,"category":5,"name":45,"updated_at":42},"build-vs-buy","Yap ya da Satın Al",{"slug":47,"category":5,"name":48,"updated_at":28},"burn-multiple","Yakma Katsayısı (Burn Multiple)",{"slug":50,"category":5,"name":51,"updated_at":42},"burn-rate","Nakit Yakma Oranı (Burn Rate)",{"slug":53,"category":5,"name":54,"updated_at":24},"cac","Müşteri Edinme Maliyeti (CAC)",{"slug":56,"category":5,"name":57,"updated_at":24},"cdn","İçerik Dağıtım Ağı (CDN)"]