Loopback IP Adresi akışı Kılavuzu

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

Genel bakış

16 Şubat 2022'de, daha güvenli OAuth akışları kullanarak Google OAuth etkileşimlerini daha güvenli hale getirmeyi planladığımızı duyurmuştuk. Bu kılavuz, geri dönüş IP adresi akışından desteklenen alternatiflere başarılı bir şekilde geçiş yapmak için gerekli değişiklikleri ve adımları anlamanıza yardımcı olur.

Bu çalışmalar, Google'ın OAuth 2.0 yetkilendirme uç noktalarıyla olan etkileşimler sırasında kimlik avı ve uygulama kimliğe bürünme saldırılarına karşı koruma sağlayan bir önlemdir.

Loopback IP Adresi akışı nedir?

Geri döngü IP adresi akışı, kullanıcı OAuth onay isteğini onayladıktan sonra kimlik bilgilerinin gönderildiği yönlendirme URI'sinin ana makine bileşeni olarak geri sarma IP adresi veya localhost kullanımını destekler. Bu akış, bazı işletim sistemlerinde aynı geri dönüş arayüzüne erişen kötü niyetli bir uygulamanın, sunucunun ortasındaki saldırılara karşı savunmasızdır. Burada, yönlendirme sunucusundan verilen yönlendirme URI'sine gelen yanıta müdahale edilebilir ve yetkilendirme koduna erişim elde edilebilir.

Geri döngü IP adresi akışı, yerel iOS, Android ve Chrome OAuth istemci türleri için kullanımdan kaldırılıyor ancak masaüstü uygulamalarında desteklenmeye devam edecek.

Önemli uygunluk tarihleri

  • 14 Mart 2022: Loopback IP adresi akışını kullanan yeni OAuth istemcileri engellendi
  • 1 Ağustos 2022: Uyumlu olmayan OAuth isteklerinde kullanıcıya yönelik bir uyarı mesajı gösterilebilir
  • 31 Ağustos 2022: Loopback IP adresi akışı, 14 Mart 2022'den önce oluşturulan yerel Android, Chrome uygulaması ve iOS OAuth istemcileri için engellenmiştir
  • 21 Ekim 2022: Mevcut tüm müşteriler engellendi (muaf tutulan müşteriler dahil). Müşteriler, 21 Ekim 2022'ye kadar Loopback IP adresi akışını kullanarak etkilenen müşterilere gönderilen e-posta iletisinde belirtildiği gibi tek seferlik uzatma isteğinde bulunabilir.

Uyumlu olmayan istekler için kullanıcıya bir ay önce gösterilen bir uyarı mesajı gösterilebilir (yani 1 Ağustos 2022'de), Loopback IP adresi akışı tamamen kullanımdan kaldırılmıştır. Mesajda, kullanıcılara, Google API Konsolu'ndaki OAuth izin ekranında kaydettiğiniz destek e-postası gösterilirken uygulamanın yakında engellenebileceği bildirilir.

Aşağıda gösterilen yetkilendirme çağrısında sorgu parametresini ileterek kullanıcıya gösterilen uyarı mesajını onaylayabilirsiniz.
  • Uygulamanızda Google'ın OAuth 2.0 Yetkilendirme Uç Noktasına istek gönderdiğiniz koda gidin.
  • Yönlendirme akışı isteğinize yaptırım tarihi: 2022-08-31 değerini içeren bir ack_loopback_shutdown parametresi ekleyin. Örnek:
    ack_loopback_shutdown=2022-08-31
Taşıma işlemini tamamlamak için tamamlamanız gereken iki temel adım vardır:
  1. Etkilenip etkilenmediğinizi belirleyin.
  2. Bu sorundan etkileniyorsanız desteklenen bir alternatife geçin.

Etkilenip etkilenmediğinizi belirleyin

OAuth istemci kimliği türünüzü inceleyin

Credentials page Google API Console bölümüne gidin ve OAuth 2.0 İstemci Kimlikleri bölümündeki OAuth istemci kimliği türünüzü görüntüleyin. Şunlardan herhangi biri olacaktır: Web uygulaması, Android, iOS, Evrensel Windows Platformu (UWP), Chrome uygulaması, TV'ler ve Sınırlı Giriş cihazları, Masaüstü uygulaması.

İstemci türünüz Android, Chrome uygulaması veya iOS ise ve geri dönüş IP adresi akışını kullanıyorsanız bir sonraki adıma geçin.

Bir Masaüstü uygulaması OAuth istemcisinde geri verilen IP adresi akışını kullanıyorsanız bu OAuth istemci türüyle kullanım desteklenmeye devam edeceği için bu kullanımdan kaldırma işlemiyle ilgili herhangi bir işlem yapmanız gerekmez.

Uygulamanızın geri dönen IP adresi akışını kullanıp kullanmadığını belirleme

Uygulamanızın gönderdiği Google OAuth yetki isteğinin geri bildirim yönlendirmesi URI değerlerini kullanıp kullanmadığını belirlemek için uygulama kodunuzu veya giden ağ çağrısını (uygulamanızın OAuth kitaplığı kullanması durumunda) inceleyin.

Uygulama kodunuzu inceleme

Uygulama kodunuzun Google OAuth yetkilendirme uç noktalarına çağrı yaptığınız bölümünü inceleyin ve redirect_uri parametresinin aşağıdaki değerlerden herhangi birine sahip olup olmadığını belirleyin:
  • redirect_uri=http://127.0.0.1:<port>, ör. redirect_uri=http://127.0.0.1:3000
  • redirect_uri=http://[::1]:<port>, ör. redirect_uri=http://[::1]:3000
  • redirect_uri=http://localhost:<port>, ör. redirect_uri=http://localhost:3000
Örnek geri sayım IP adresi yönlendirme akışı isteği aşağıdaki gibi görünür:
https://accounts.google.com/o/oauth2/v2/auth?
redirect_uri=http://localhost:3000&
response_type=code&
scope=<SCOPES>&
state=<STATE>&
client_id=<CLIENT_ID>

Giden ağ çağrısını incele

Ağ çağrılarını inceleme yöntemi, uygulamanızın istemci türüne bağlı olarak değişiklik gösterir.
Ağ çağrılarını incelerken Google OAuth yetkilendirme uç noktalarına gönderilen istekleri arayın ve redirect_uri parametresinin aşağıdaki değerlerden herhangi birine sahip olup olmadığını belirleyin:
  • redirect_uri=http://127.0.0.1:<port>, ör. redirect_uri=http://127.0.0.1:3000
  • redirect_uri=http://[::1]:<port>, ör. redirect_uri=http://[::1]:3000
  • redirect_uri=http://localhost:<port>, ör. redirect_uri=http://localhost:3000
Örnek bir geri döngü IP adresi yönlendirme akışı isteği aşağıdaki gibi görünür:
https://accounts.google.com/o/oauth2/v2/auth?
redirect_uri=http://localhost:3000&
response_type=code&
scope=<SCOPES>&
state=<STATE>&
client_id=<CLIENT_ID>

Desteklenen bir alternatife geçiş yapın

Mobil İstemciler (Android / iOS)

Uygulamanızın, geri dönüş IP adresi akışını Android veya iOS OAuth istemci türüyle kullandığını tespit ederseniz Google ile Oturum Açma mobil SDK'larımızı (Android, iOS) kullanmaya geçmeniz gerekir.

SDK, Google API'lerine erişimi kolaylaştırır ve Google'ın OAuth 2.0 yetkilendirme uç noktalarına yapılan tüm çağrıları işler.

Aşağıdaki doküman bağlantıları, Google API'lerine geri döngü IP adresi yönlendirme URI'si kullanmadan erişmek için Google ile Oturum Açma SDK'larının nasıl kullanılacağı hakkında bilgi sağlar.

Android'de Google API'lerine erişme

Sunucu Tarafı (çevrimdışı) erişim
Aşağıdaki örnekte, Android'de sunucu tarafında Google API'lerine nasıl erişileceği gösterilmektedir.
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
try {
  GoogleSignInAccount account = task.getResult(ApiException.class);
  
  // request a one-time authorization code that your server exchanges for an
  // access token and sometimes refresh token
  String authCode = account.getServerAuthCode();
  
  // Show signed-in UI
  updateUI(account);

  // TODO(developer): send code to server and exchange for access/refresh/ID tokens
} catch (ApiException e) {
  Log.w(TAG, "Sign-in failed", e);
  updateUI(null);
}

Google API'lere sunucu tarafında nasıl erişileceğiyle ilgili sunucu tarafı erişim kılavuzunu inceleyin.

iOS Uygulamasında Google API'lerine Erişme

İstemci tarafı erişimi

Aşağıdaki örnekte, iOS'te istemci tarafında Google API'lerine nasıl erişileceği gösterilmektedir.

user.authentication.do { authentication, error in
  guard error == nil else { return }
  guard let authentication = authentication else { return }
  
  // Get the access token to attach it to a REST or gRPC request.
  let accessToken = authentication.accessToken
  
  // Or, get an object that conforms to GTMFetcherAuthorizationProtocol for
  // use with GTMAppAuth and the Google APIs client library.
  let authorizer = authentication.fetcherAuthorizer()
}

Erişim jetonunu REST veya gTB isteğinin (Authorization: Bearer ACCESS_TOKEN) başlığına ekleyerek ya da REST için Objective-C için Google API'leri istemci kitaplığıyla alıcı yetkilendirmeyi (GTMFetcherAuthorizationProtocol) kullanarak erişim jetonunu kullanarak API'yi çağırın.

İstemci tarafında Google API'lerine nasıl erişeceğinizi öğrenmek için istemci tarafı erişim kılavuzunu inceleyin. Google API'lerine nasıl erişeceğinizi öğrenin.

Sunucu tarafı (çevrimdışı) erişim
Aşağıdaki örnekte, bir iOS istemcisini desteklemek için sunucu tarafında Google API'lerine nasıl erişileceği gösterilmektedir.
GIDSignIn.sharedInstance.signIn(with: signInConfig, presenting: self) { user, error in
  guard error == nil else { return }
  guard let user = user else { return }
  
  // request a one-time authorization code that your server exchanges for
  // an access token and refresh token
  let authCode = user.serverAuthCode
}

Google API'lere sunucu tarafında nasıl erişileceğine dair sunucu tarafı erişim kılavuzunu inceleyin.

Chrome Uygulama İstemcisi

Uygulamanızın Chrome uygulama istemcisindeki geri dönüş IP adresi akışını kullandığını tespit ederseniz Chrome Identity API'ye geçmeniz gerekir.

Aşağıdaki örnekte, geri döngü IP adresi yönlendirme URI'si kullanılmadan tüm kullanıcı kişilerinin nasıl alınacağı gösterilmektedir.

window.onload = function() {
  document.querySelector('button').addEventListener('click', function() {

  
  // retrieve access token
  chrome.identity.getAuthToken({interactive: true}, function(token) {
  
  // ..........


  // the example below shows how to use a retrieved access token with an appropriate scope
  // to call the Google People API contactGroups.get endpoint

  fetch(
    'https://people.googleapis.com/v1/contactGroups/all?maxMembers=20&key=API_KEY',
    init)
    .then((response) => response.json())
    .then(function(data) {
      console.log(data)
    });
   });
 });
};

Kimlik doğrulama kullanıcılarına erişme ve Google uç noktalarını Chrome Identity API ile çağırma hakkında daha fazla bilgi edinmek için Chrome Identity API kılavuzunu inceleyin.