"Google ile giriş yap" (OpenID Connect) akışı uçtan uca nasıl çalışır? ID token ile access token arasındaki fark nedir?
Cevap
"Google ile giriş yap", OAuth 2.0'ın üzerine kimlik katmanı ekleyen OpenID Connect (OIDC) ile çalışır. OAuth 2.0 tek başına yetkilendirme (bir API'ye erişim izni) içindir; OIDC ise kimliği doğrular ve bunu ID token ile bildirir.
Akış (Authorization Code + PKCE)
- Kullanıcı butona tıklar; uygulama
state,nonceve PKCEcode_verifierüretip kullanıcıyı Google'a yönlendirir (scope=openid email profile). - Kullanıcı Google'da giriş yapar ve izin verir.
- Google, kullanıcıyı
redirect_uriadresine?code=...&state=...ile geri gönderir. - Backend
statedeğerini kontrol eder (CSRF koruması),code'ucode_verifierve client secret ile token endpoint'inde ID token + access token ile değiştirir. - Backend ID token'ı doğrular: imza (Google'ın JWKS anahtarları),
iss,aud(sizin client ID'niz),exp,nonce. sub(Google'daki değişmez kullanıcı kimliği) ile kendiuserstablonuzda kullanıcıyı bulur veya oluşturur.- Kendi oturumunuzu açarsınız (session cookie veya kendi JWT'niz). Google'ın token'ları genelde burada işini bitirmiş olur.
| ID token | Access token | |
|---|---|---|
| Kime yönelik | Sizin uygulamanıza (client) | Bir API'ye (resource server) |
| İçerik | Kullanıcı kimliği: sub, email, name | Yetkiler (scope) |
| Format | Her zaman JWT | JWT veya opak olabilir |
| Kullanım | Kimin giriş yaptığını öğrenmek | Google Calendar API gibi bir API'yi çağırmak |
Sık hatalar
- Kullanıcıyı
emailile eşlemek: e-posta değişebilir;subkullanın, e-postayı sadeceemail_verifiedtrue ise güvenin. - Access token'ı kimlik kanıtı olarak kullanmak.
audkontrolünü atlamak: başka bir uygulama için üretilmiş token'ı kabul edersiniz.- Aynı e-postayla şifreli hesap varken otomatik hesap birleştirme yapmak (hesap ele geçirme riski).
Auth.js, Clerk, Auth0 veya Keycloak gibi kütüphaneler bu adımları sizin için yapar, ancak mülakatta akışın kendisini anlatabilmeniz beklenir.
İlgili Web Güvenliği soruları
- CORS nedir? Neden CORS hatası alırız?
- XSS ve CSRF saldırıları nedir, nasıl korunulur?
- Authentication ile authorization arasındaki fark nedir?
- Güvenli cookie ayarları nelerdir? Session hijacking nasıl önlenir?
- Content Security Policy (CSP) nedir ve nasıl yapılandırılır?
- OWASP Top 10 nedir? En önemli maddelerini özetleyin.
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.