OAuth Nedir? “Google ile Giriş” ve Yetki Devri Açıklaması
OAuth, bir kullanıcının bir uygulamaya kendi hesabı üzerinde başka bir hizmette sınırlı erişim vermesini sağlayan açık bir standarttır; parolasını teslim etmeden. “Google Takvim’i bağla” düğmesine basıp “Bu uygulamanın etkinliklerinizi görmesine izin verilsin mi?” sorusunu içeren bir ekran gördüğünüzde, bu OAuth’tur. Uygulama yalnızca onayladığınız şey için bir belirteç alır ve bunu istediğiniz zaman iptal edebilirsiniz. Aynı mekanizma, OpenID Connect adı verilen ek bir katmanla, “Google ile Giriş” ve benzeri düğmelerin arkasında da çalışır.
Yapay zekâyla yapı kurarken OAuth neden önemli?
OAuth, bir uygulama yaparken iki yaygın durumda karşınıza çıkar:
- Sosyal giriş. Kullanıcılarınızın yeni bir parola oluşturmak yerine “Google ile Giriş” (ya da Apple, Microsoft, GitHub) ile girmesini istersiniz. Bkz. uygulamanıza giriş nasıl eklenir.
- Kullanıcıların diğer hizmetlerdeki hesaplarına bağlanmak. Uygulamanızın bir kullanıcının takvimini okuması, sosyal hesabında paylaşım yapması, bulut sürücüsünden dosya çekmesi ya da muhasebe verilerini eşitlemesi gerekir.
Her iki durumda da yapay zekâ oluşturucunuz kodu yazabilir, ama bazı adımları yalnızca siz yapabilirsiniz: sağlayıcıyla bir geliştirici uygulaması oluşturmak, bir client ID ve client secret almak, geri dönüş URL’lerini kaydetmek ve bazı izinler için sağlayıcının incelemesinden geçmek. OAuth’un nasıl çalıştığını bilmek, bu adımları ve bunların yarattığı hataları çok daha az gizemli kılar. Girişin daha geniş resmi için bkz. kimlik doğrulama nedir.
Günlük bir benzetme
Bir otel anahtar kartını düşünün. Girişte resepsiyon kim olduğunuzu doğrular, sonra odanızı ve spor salonunu açan ama diğer odaları ve personel alanlarını açmayan, çıkışta da çalışmayı bırakan bir kart verir. Kartta pasaportunuz yazmaz. Kartı kaybederseniz resepsiyon onu iptal eder ve yenisini verir.
- Resepsiyon yetkilendirme sunucusudur (Google’ın giriş sayfası).
- Kimlik kontrolünüz Google’a giriş yapmanızdır.
- Anahtar kart erişim belirtecidir.
- “Yalnızca oda ve spor salonu” onayladığınız kapsamlardır.
- Çıkış belirtecin süresinin dolması ya da erişimi iptal etmenizdir.
Kullandığınız uygulama Google parolanızı hiç görmez; yalnızca anahtar kartı görür.
OAuth adım adım nasıl çalışır?
Web uygulamaları için en yaygın akış yetkilendirme kodu akışıdır. Bir kullanıcı Google Takvim’ini bir planlama uygulamasına bağladığında olanlar şöyledir:
-
Tıklar. Kullanıcı “Google Takvim’i bağla”ya tıklar.
-
Sağlayıcıya yönlendirir. Uygulama tarayıcıyı, istemci kimliği, istediği kapsamlar (takvim etkinliklerini okuma) ve Google’ın kullanıcıyı geri göndereceği yönlendirme URI’si ile birlikte Google’a gönderir.
-
Giriş yapar ve onaylar. Kullanıcı (henüz yapmamışsa) Google’a giriş yapar ve uygulamanın istediklerini listeleyen bir onay ekranı görür. İzin ver’e tıklar.
-
Bir kodla geri döner. Google, tarayıcıyı kısa ömürlü, tek kullanımlık bir yetkilendirme kodu ile uygulamanın yönlendirme URI’sine geri gönderir.
-
Sunucuda değiştirilir. Uygulamanın sunucusu bu kodu, istemci sırrıyla birlikte doğrudan Google’a gönderir ve bir erişim belirteci (çoğu zaman bir yenileme belirteci de) alır.
-
API’yi kullanır. Sunucu, erişim belirteciyle Google Takvim API’sini çağırır ve kullanıcının etkinliklerini alır.
-
adımdaki geri çağırma şöyle bir şeye benzer:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
- adımdaki belirteç yanıtı ise şöyle bir JSON olur:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
Önemli tasarım noktası şudur: belirteç değişimi sunucudan sunucuya gerçekleşir; bu yüzden istemci sırrı ve belirteçler tarayıcıdan hiç geçmek zorunda kalmaz.
OAuth, OpenID Connect ve kendi girişiniz
| Neyi yanıtlar | Örnek | |
|---|---|---|
| OAuth 2.0 | “Bu uygulama kullanıcı adına neler yapabilir?” (yetkilendirme) | Kullanıcının takvimini okumak |
| OpenID Connect (OIDC) | “Bu kullanıcı kim?” (kimlik doğrulama), OAuth üzerine kurulu | “Google ile Giriş”in doğrulanmış bir e-posta döndürmesi |
| Kendi girişiniz | “Bu hesap için doğru parola mı?” | Veritabanınızda saklanan (karması alınmış) e-posta ve parola |
Birçok uygulama bunları birleştirir: e-posta ve parolayla giriş, OIDC üzerinden “Google ile Giriş” ve diğer hizmetlere ayrı OAuth bağlantıları.
Temel terimler
| Terim | Anlamı |
|---|---|
| Sağlayıcı / yetkilendirme sunucusu | Kullanıcının giriş yaptığı ve erişim verdiği hizmet — Google, Microsoft, GitHub. |
| İstemci (client) | Sağlayıcıya kayıtlı olduğu haliyle uygulamanız. |
| Client ID (istemci kimliği) | Uygulamanızın sağlayıcıdaki herkese açık tanımlayıcısı. |
| Client secret (istemci sırrı) | Uygulamanızın sağlayıcıdaki özel parolası. Yalnızca sunucuda. |
| Kapsam (scope) | “Takvimi oku” ya da “e-posta adresini gör” gibi belirli bir izin. |
| Onay ekranı | Kullanıcının istenen kapsamları gördüğü ve onayladığı sayfa. |
| Redirect URI / geri çağırma URL’si | Sağlayıcının kullanıcıyı geri gönderdiği adres. Önceden kayıtlı olmalı ve tam eşleşmelidir. |
| Erişim belirteci (access token) | API çağırmak için kısa ömürlü kimlik bilgisi. |
| Yenileme belirteci (refresh token) | Yeni erişim belirteçleri almak için daha uzun ömürlü kimlik bilgisi. Bir parola gibi saklayın. |
| ID token | OIDC’de kullanıcının kim olduğunu anlatan imzalı bir belirteç. |
| PKCE | Ele geçirilen kodların kullanılmasını engelleyen ek bir kontrol (“kanıt anahtarı”). Tüm istemciler için önerilir. |
| state | Akışı sahte isteklere karşı koruyan rastgele bir değer. |
Yaygın yanlış anlamalar
- “OAuth bir giriş sistemidir.” Düz OAuth erişim verir; OpenID Connect kimliği yönetir. Çıplak bir erişim belirtecini birinin kim olduğunun kanıtı olarak kullanmak gerçek güvenlik hatalarına yol açmıştır.
- “Uygulama parolamı alıyor.” Hiçbir zaman almaz. Asıl amaç da budur.
- “Daha fazla kapsam istemek zararsızdır.” Kullanıcılar geniş isteklerden daha çok şüphelenir ve Google gibi sağlayıcılar hassas ya da kısıtlı kapsamlar için uygulama incelemesi isteyebilir. Yalnızca ihtiyacınız olanı isteyin.
- “İstemci sırrı ön yüze konabilir.” Tarayıcı kodunda olan her şey herkese açıktır. Sunucu tarafı gizli bilgilerde tutun.
- “Testte çalışıyorsa canlıda da çalışır.” Sağlayıcılar doğrulanmamış uygulamaları çoğu zaman sınırlar — örneğin listelenmiş test kullanıcılarıyla — ve canlı alan adınız için yönlendirme URI’si ayrıca kaydedilmelidir.
- “Belirteçler sonsuza kadar geçerlidir.” Erişim belirteçleri hızla sona erer ve kullanıcılar erişimi iptal edebilir. Uygulamanız ikisini de zarifçe ele almalıdır.
Yapay zekâ oluşturucunuzdan ne isteyin
- “‘Google ile Giriş’i OpenID Connect ile, iyi bakımı yapılan bir kimlik doğrulama kütüphanesiyle ekle — OAuth akışını elle yazma.”
- “PKCE ile yetkilendirme kodu akışını kullan ve
stateparametresini kontrol et.” - “İstemci kimliğini ve istemci sırrını sunucuda ortam değişkenlerinden oku.”
- “Yalnızca ihtiyacımız olan kapsamları iste: salt okunur takvim erişimi.”
- “Sağlayıcının konsolunda kaydetmem gereken tüm yönlendirme URL’lerini söyle: önizleme, yayımlanmış URL ve özel alan adım için.”
- “Yenileme belirteçlerini veritabanında şifreli sakla; süresi dolmuş ya da iptal edilmiş belirteçleri, kullanıcıdan yeniden bağlanmasını isteyerek ele al.”
- “Kullanıcıların entegrasyonu kendi ayarlar sayfalarından kaldırabilmesini sağla.”
Mythex’te OAuth
Mythex’in oluşturduğunuz uygulamalar için yerleşik bir son kullanıcı girişi yoktur; dokümanlar bunu kendi getirdiğiniz (bring-your-own) bir yaklaşım olarak tarif eder: bir kimlik doğrulama kütüphanesi ya da barındırılan bir sağlayıcı seçersiniz, anahtarlarını proje gizli bilgileri olarak saklarsınız ve ajan kodu yazar. Bunun için bir başlangıç isteminin olduğu kimlik doğrulama ekleme tarifi bulunur. Mythex’in kendisinde de OAuth ile karşılaşırsınız: Google ile kaydolabilirsiniz; depo eşitlemesi için GitHub bağlamak GitHub OAuth kullanır; Mythex’e MCP üzerinden bağlanan yapay zekâ istemcileri bir onay sayfasından geçer. Daha fazlası için bkz. kimlik doğrulama nedir ve iki faktörlü kimlik doğrulama nedir.
Sorular
OAuth basitçe nedir?
OAuth, bir kullanıcının bir uygulamaya kendi hesabının başka bir hizmetteki verilerine sınırlı erişim vermesi için kullanılan açık bir standarttır; şifresini paylaşmadan. Örneğin bir planlama uygulamasının Google Takvim’i okumasına izin verebilirsiniz. Kullanıcı belirli izinleri onaylar ve uygulama yalnızca bunlar için bir belirteç alır.
OAuth, “Google ile Giriş” ile aynı mı?
“Google ile Giriş”, OAuth 2.0 ve OpenID Connect üzerine kuruludur. OpenID Connect, OAuth’un üzerine kullanıcının kim olduğunu standart bir biçimde bildiren bir katman ekler. Tek başına OAuth erişim vermekle ilgilidir; OpenID Connect onu bir girişe dönüştürür.
OAuth erişim belirteci nedir?
Erişim belirteci, bir uygulamanın bir hizmetin API’sine erişim izni aldığını kanıtlamak için gönderdiği bir kimlik bilgisidir. Genellikle kısa ömürlüdür ve kullanıcının onayladığı izinlerle (kapsamlarla) sınırlıdır. Verilmişse bir yenileme belirteci, uygulamanın kullanıcıya yeniden sormadan yeni erişim belirteçleri almasını sağlar.
redirect_uri_mismatch ne anlama gelir?
Uygulamanızın girişte gönderdiği geri dönüş URL’sinin, sağlayıcının geliştirici konsolunda kayıtlı olanla tam olarak eşleşmediği anlamına gelir. Uygulamanızın çalıştığı her adres için tam URL’yi ekleyin: https, alan adı, yol ve varsa sondaki eğik çizgi dahil.
OAuth güvenli mi?
OAuth 2.0, doğru uygulandığında yaygın kullanılan ve güvenlidir: PKCE ile yetkilendirme kodu akışı, tam yönlendirme URL’leri, state parametresi ve istemci sırrının ve belirteçlerin sunucuda tutulması gibi yöntemlerle. Sorunların çoğu uygulama kısayollarından kaynaklanır; bu yüzden iyi bakımı yapılan bir kütüphane kullanmak önerilir.