"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)

  1. Kullanıcı butona tıklar; uygulama state, nonce ve PKCE code_verifier üretip kullanıcıyı Google'a yönlendirir (scope=openid email profile).
  2. Kullanıcı Google'da giriş yapar ve izin verir.
  3. Google, kullanıcıyı redirect_uri adresine ?code=...&state=... ile geri gönderir.
  4. Backend state değerini kontrol eder (CSRF koruması), code'u code_verifier ve client secret ile token endpoint'inde ID token + access token ile değiştirir.
  5. Backend ID token'ı doğrular: imza (Google'ın JWKS anahtarları), iss, aud (sizin client ID'niz), exp, nonce.
  6. sub (Google'daki değişmez kullanıcı kimliği) ile kendi users tablonuzda kullanıcıyı bulur veya oluşturur.
  7. Kendi oturumunuzu açarsınız (session cookie veya kendi JWT'niz). Google'ın token'ları genelde burada işini bitirmiş olur.
ID tokenAccess token
Kime yönelikSizin uygulamanıza (client)Bir API'ye (resource server)
İçerikKullanıcı kimliği: sub, email, nameYetkiler (scope)
FormatHer zaman JWTJWT veya opak olabilir
KullanımKimin giriş yaptığını öğrenmekGoogle Calendar API gibi bir API'yi çağırmak

Sık hatalar

  • Kullanıcıyı email ile eşlemek: e-posta değişebilir; sub kullanın, e-postayı sadece email_verified true ise güvenin.
  • Access token'ı kimlik kanıtı olarak kullanmak.
  • aud kontrolü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.

  1. CORS nedir? Neden CORS hatası alırız?OrtaWeb GüvenliğiFull Stack
  2. XSS ve CSRF saldırıları nedir, nasıl korunulur?ZorWeb GüvenliğiFull Stack
  3. Authentication ile authorization arasındaki fark nedir?KolayWeb GüvenliğiFull Stack
  4. Güvenli cookie ayarları nelerdir? Session hijacking nasıl önlenir?OrtaWeb GüvenliğiFull Stack
  5. Content Security Policy (CSP) nedir ve nasıl yapılandırılır?ZorWeb GüvenliğiFull Stack
  6. OWASP Top 10 nedir? En önemli maddelerini özetleyin.OrtaWeb GüvenliğiFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle