Guide de migration pour le flux d'adresses IP de rebouclage

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Présentation

Le 16 février 2022, nous avons annoncé notre intention de renforcer la sécurité des interactions OAuth de Google en utilisant des flux OAuth plus sécurisés. Ce guide vous aide à comprendre les modifications et étapes nécessaires pour migrer correctement le flux d'adresses IP de bouclage vers des alternatives compatibles.

Cette démarche vise à protéger les tentatives d'hameçonnage et d'usurpation d'identité des applications lors des interactions avec les points de terminaison Google OAuth 2.0.

Qu'est-ce que le flux d'adresses IP de rebouclage ?

Le flux d'adresse IP de bouclage accepte l'utilisation d'une adresse IP de rebouclage ou de localhost en tant que composant hôte de l'URI de redirection vers lequel les identifiants sont envoyés après qu'un utilisateur a approuvé une demande de consentement OAuth. Ce flux est vulnérable aux attaques d'hommes du milieu lorsqu'une application malintentionnée accédant à la même interface de bouclage sur certains systèmes d'exploitation peut intercepter la réponse du serveur d'autorisation à l'URI de redirection donné et obtenir le code d'autorisation.

Le flux d'adresses IP de rebouclage est abandonné pour les types de clients OAuth natifs Chrome pour iOS, Android et Chrome, mais il sera toujours compatible avec les applications de bureau.

Dates clés de conformité

  • 14 mars 2022 : blocage des nouveaux clients OAuth via le flux d'adresses IP de rebouclage
  • 1er août 2022 : un message d'avertissement peut s'afficher pour les requêtes OAuth non conformes
  • 31 août 2022 : le flux d'adresses IP de bouclage est bloqué pour les clients OAuth natifs Android, Chrome et iOS créés avant le 14 mars 2022.
  • 21 octobre 2022 : tous les clients existants sont bloqués (y compris les clients exemptés) Les clients peuvent demander une extension unique pour continuer à utiliser le flux d'adresses IP de rebouclage jusqu'au 21 octobre 2022, comme indiqué dans l'e-mail envoyé aux clients concernés.

Un message d'avertissement peut s'afficher un mois avant l'affichage pour les requêtes non conformes (c'est-à-dire le 1er août 2022, le flux d'adresses IP de rebouclage est entièrement obsolète). Le message indiquera aux utilisateurs que l'application peut être bloquée rapidement en affichant l'adresse e-mail d'assistance que vous avez enregistrée dans l'écran de consentement OAuth dans la console Google APIs.

Vous pouvez accuser réception et supprimer le message d'avertissement en transmettant un paramètre de requête dans l'appel d'autorisation, comme indiqué ci-dessous.
  • Accédez au code de votre application où vous envoyez des requêtes au point de terminaison d'autorisation OAuth 2.0 de Google.
  • Ajoutez un paramètre ack_loopback_shutdown avec la valeur d'application: 2022-08-31 à votre requête de flux de redirection. Exemple :
    ack_loopback_shutdown=2022-08-31
Le processus de migration comporte deux étapes principales :
  1. Déterminez si vous êtes concerné.
  2. Si vous êtes concerné, migrez vers une autre solution compatible.

Déterminez si vous êtes concerné

Vérifiez votre type d'ID client OAuth

Accédez à Credentials page du Google API Console , puis affichez votre type d'ID client OAuth dans la section ID client OAuth 2.0. au choix: application Web, Android, iOS, Universal Windows Platform (UWP), application Chrome, téléviseurs et périphériques d'entrée limités, application de bureau.

Passez à l'étape suivante si vous utilisez Android, Chrome ou iOS et que vous utilisez le flux d'adresses IP de bouclage.

Vous n'avez aucune action à effectuer concernant cet abandon si vous utilisez le flux d'adresses IP de bouclage sur un client OAuth d'application de bureau. En effet, l'utilisation avec ce type de client OAuth restera disponible.

Déterminer si votre application utilise le flux d'adresses IP de bouclage

Inspectez le code de votre application ou l'appel réseau sortant (si votre application utilise une bibliothèque OAuth) afin de déterminer si la demande d'autorisation Google OAuth de votre application utilise des valeurs d'URI de redirection en boucle.

Inspecter le code de votre application

Examinez la section du code de votre application dans laquelle vous appelez les points de terminaison d'autorisation Google OAuth, et déterminez si le paramètre redirect_uri comporte l'une des valeurs suivantes :
  • redirect_uri=http://127.0.0.1:<port> (par exemple, redirect_uri=http://127.0.0.1:3000)
  • redirect_uri=http://[::1]:<port> (par exemple, redirect_uri=http://[::1]:3000)
  • redirect_uri=http://localhost:<port> (par exemple, redirect_uri=http://localhost:3000)
Un exemple de requête de flux d'adresses IP de bouclage se présente comme suit :
https://accounts.google.com/o/oauth2/v2/auth?
redirect_uri=http://localhost:3000&
response_type=code&
scope=<SCOPES>&
state=<STATE>&
client_id=<CLIENT_ID>

Inspecter l'appel réseau sortant

La méthode d'inspection des appels réseau dépend du type de client de votre application.
Lors de l'inspection des appels réseau, recherchez les requêtes envoyées aux points de terminaison d'autorisation Google OAuth et déterminez si le paramètre redirect_uri comporte l'une des valeurs suivantes :
  • redirect_uri=http://127.0.0.1:<port> (par exemple, redirect_uri=http://127.0.0.1:3000)
  • redirect_uri=http://[::1]:<port> (par exemple, redirect_uri=http://[::1]:3000)
  • redirect_uri=http://localhost:<port> (par exemple, redirect_uri=http://localhost:3000)
Un exemple de requête de flux de redirection d'adresse IP de bouclage se présente comme suit :
https://accounts.google.com/o/oauth2/v2/auth?
redirect_uri=http://localhost:3000&
response_type=code&
scope=<SCOPES>&
state=<STATE>&
client_id=<CLIENT_ID>

Migrer vers une alternative compatible

Clients mobiles (Android / iOS)

Si vous constatez que votre application utilise le flux d'adresses IP de bouclage avec un type de client OAuth Android ou iOS, vous devez migrer vers nos SDK pour mobile Google Sign-In (Android, iOS).

Le SDK facilite l'accès aux API Google et gère tous les appels vers les points de terminaison d'autorisation OAuth 2.0 de Google.

Les liens vers la documentation ci-dessous expliquent comment utiliser les SDK Google Sign-In pour accéder aux API Google sans utiliser d'URI de redirection d'adresse IP de bouclage.

Accéder aux API Google sur Android

Accès côté serveur (hors connexion)
L'exemple ci-dessous montre comment accéder aux API Google côté serveur sous Android.
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);
}

Consultez le guide d'accès côté serveur pour découvrir comment accéder aux API Google côté serveur.

Accéder aux API Google dans une application iOS

Accès côté client

L'exemple ci-dessous montre comment accéder aux API Google côté client sur iOS.

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()
}

Utilisez le jeton d'accès pour appeler l'API, soit en l'incluant dans l'en-tête d'une requête REST ou gRPC (Authorization: Bearer ACCESS_TOKEN), soit en utilisant l'outil d'autorisation de récupération (GTMFetcherAuthorizationProtocol) avec la bibliothèque cliente des API Google pour Objective-C pour REST.

Consultez le guide d'accès côté client pour découvrir comment accéder aux API Google côté client. sur l'accès aux API Google côté client.

Accès côté serveur (hors connexion)
L'exemple ci-dessous montre comment accéder aux API Google côté serveur pour prendre en charge un client iOS.
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
}

Consultez le guide d'accès côté serveur pour découvrir comment accéder aux API Google côté serveur.

Client de l'application Chrome

Si vous constatez que votre application utilise le flux d'adresses IP de rebouclage sur le client de l'application Chrome, vous devez migrer vers l'API Chrome Identity.

L'exemple ci-dessous montre comment obtenir tous les contacts utilisateur sans utiliser d'URI de redirection d'adresse IP de rebouclage.

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)
    });
   });
 });
};

Consultez le guide de l'API Chrome Identity pour savoir comment accéder aux utilisateurs authentifiés et appeler les points de terminaison Google avec l'API Chrome Identity.