L'association de comptes permet aux titulaires d'un compte Google de se connecter à vos services de manière rapide, fluide et sécurisée. Vous pouvez choisir d'implémenter l'association de comptes Google pour partager les données d'un utilisateur de votre plate-forme avec les applications et services Google.
Le protocole OAuth 2.0 sécurisé vous permet d'associer de manière sécurisée le compte Google d'un utilisateur à son compte sur votre plate-forme, ce qui permet aux applications et appareils Google d'accéder à vos services.
Les utilisateurs peuvent associer ou dissocier leurs comptes, et éventuellement en créer un autre sur votre plate-forme via l'association de comptes Google.
Cas d'utilisation
Voici quelques raisons d'implémenter l'association de comptes Google:
Partager les données d'un utilisateur depuis votre plate-forme avec les applications et services Google
Regardez vos vidéos et vos films à l'aide de Google TV.
Gérez et contrôlez les appareils connectés à votre maison connectée Google à l'aide de l'application Google Home et de l'Assistant Google, "Hey Google, allume la lumière".
Créez des expériences et des fonctionnalités personnalisées pour l'Assistant Google avec les actions conversationnelles, par exemple "Hey Google, commande mon café habituel chez Starbucks".
Permettez aux utilisateurs de gagner des récompenses en regardant des diffusions en direct éligibles sur YouTube après avoir associé leur compte Google à un compte partenaire pour les récompenses.
Préremplir les nouveaux comptes lors de la création avec des données partagées de manière consensuelle à partir d'un profil de compte Google
Fonctionnalités compatibles
Les fonctionnalités suivantes sont compatibles avec l'association de comptes Google:
Partagez vos données rapidement et facilement à l'aide du flux OAuth Linking implicit (Association OAuth implicite).
Renforcez la sécurité avec le flux OAuth Linking authorization code (Code d'autorisation d'association OAuth).
Connectez des utilisateurs existants ou inscrivez de nouveaux utilisateurs vérifiés par Google sur votre plate-forme, obtenez leur consentement et partagez des données de manière sécurisée avec l'association simplifiée.
Simplifiez l'expérience avec la rotation d'application. À partir d'une application Google de confiance, il suffit d'un geste pour ouvrir de manière sécurisée votre application Android ou iOS validée. En un seul geste, vous obtenez le consentement de l'utilisateur et associe les comptes.
Améliorez la confidentialité des utilisateurs en définissant des champs d'application personnalisés pour ne partager que les données nécessaires, et gagnez la confiance des utilisateurs en définissant clairement comment leurs données sont utilisées.
L'accès aux données et aux services hébergés sur votre plate-forme peut être révoqué en dissociant des comptes. L'implémentation d'un point de terminaison de révocation de jeton facultatif vous permet de rester synchronisé avec les événements déclenchés par Google, tandis que la protection multicompte (RISC) vous permet d'informer Google de toute dissociation qui se produit sur votre plate-forme.
Parcours d'association de comptes
Il existe trois flux d'association de comptes Google, tous basés sur OAuth et vous obligeant à gérer ou à contrôler les points de terminaison d'autorisation et d'échange de jetons conformes à OAuth 2.0.
Au cours du processus d'association, vous devez émettre des jetons d'accès à Google pour les comptes Google individuels après avoir obtenu l'autorisation du titulaire du compte pour associer ses comptes et partager des données.
Association OAuth ('OAuth Web')
Il s'agit du flux OAuth de base qui redirige les utilisateurs vers votre site Web pour qu'ils puissent les associer. L'utilisateur est redirigé vers votre site Web pour se connecter à son compte. Une fois connecté, l'utilisateur accepte de partager ses données sur votre service avec Google. Le compte Google de l'utilisateur et votre service sont alors associés.
L'association OAuth est compatible avec le code d'autorisation et les flux OAuth implicites. Votre service doit héberger un point de terminaison d'autorisation conforme à OAuth 2.0 pour le flux implicite et doit exposer à la fois un point de terminaison d'autorisation et un point de terminaison d'échange de jetons lorsque vous utilisez le flux avec code d'autorisation.
Figure 1 : Association de compte sur le téléphone d'un utilisateur avec OAuth Web
Association de l'app flip basée sur OAuth (fonctionnalité "App Flip")
Flux OAuth qui redirige les utilisateurs vers votre application pour l'association.
L'association d'application basée sur OAuth guide les utilisateurs lorsqu'ils passent de vos applications mobiles Android ou iOS validées à la plate-forme de Google pour examiner les modifications proposées concernant l'accès aux données et donner leur consentement pour associer leur compte sur votre plate-forme à leur compte Google. Pour activer le basculement d'application, votre service doit prendre en charge l'association OAuth ou l'association Google Sign-In basée sur OAuth à l'aide du flux code d'autorisation.
Le basculement d'application est compatible avec Android et iOS.
Fonctionnement:
L'application Google vérifie si votre application est installée sur l'appareil de l'utilisateur:
- Si l'application est trouvée, l'utilisateur est redirigé vers votre application. Votre application recueille le consentement de l'utilisateur pour associer le compte à Google, puis le redirige vers la surface Google.
- Si l'application n'est pas trouvée ou qu'une erreur se produit lors du processus d'association de l'application, l'utilisateur est redirigé vers le flux OAuth simplifié ou Web.
Figure 2 : Association de compte sur le téléphone d'un utilisateur avec App Flip
Association simplifiée basée sur OAuth ("Simplifié")
La simplification de l'association à Google Sign-In basée sur OAuth ajoute Google Sign-In à l'association OAuth, ce qui permet aux utilisateurs de terminer le processus d'association sans quitter la surface Google, réduisant ainsi les frictions et les abandons. L'association simplifiée basée sur OAuth offre la meilleure expérience utilisateur avec une connexion, une création et une association de comptes fluides en combinant Google Sign-In et l'association OAuth. Votre service doit être compatible avec les points de terminaison d'autorisation et d'échange de jetons conformes à OAuth 2.0.
De plus, votre point de terminaison d'échange de jetons doit prendre en charge les assertions JSON Web Token (JWT) et implémenter les intents check
, create
et get
.
Fonctionnement:
Google valide le compte utilisateur et vous transmet les informations suivantes:
- Si un compte existe pour l'utilisateur dans votre base de données, l'utilisateur peut associer son compte Google à son compte sur votre service.
- Si aucun compte n'existe pour l'utilisateur dans votre base de données, il peut créer un compte tiers avec les informations affirmées fournies par Google : adresse e-mail, nom et photo de profil, ou choisir de se connecter et d'associer un autre e-mail (il devra alors se connecter à votre service via OAuth Web).
Figure 3. Association de comptes sur le téléphone d'un utilisateur avec l'association simplifiée
Quel flux devez-vous utiliser ?
Nous vous recommandons d'implémenter tous les flux pour garantir aux utilisateurs la meilleure expérience d'association possible. Les flux simplifiés et de basculement d'application réduisent les frictions liées à l'association, car les utilisateurs peuvent effectuer le processus d'association en très peu d'étapes. L'association OAuth Web est la plus simple à mettre en place. Elle constitue un bon point de départ, après quoi vous pouvez ajouter les autres flux d'association.
Utiliser des jetons
L'association de compte Google est basée sur la norme du secteur OAuth 2.0.
Vous délivrez des jetons d'accès à Google pour des comptes Google individuels après avoir obtenu l'autorisation des titulaires de ces comptes d'associer leurs comptes et de partager des données.
Types de jetons
OAuth 2.0 utilise des chaînes appelées jetons pour communiquer entre l'agent utilisateur, l'application cliente et le serveur OAuth 2.0.
Trois types de jetons OAuth 2.0 peuvent être utilisés lors de l'association de comptes:
Code d'autorisation Jeton de courte durée pouvant être échangé contre un jeton d'accès et un jeton d'actualisation. Pour des raisons de sécurité, Google appelle votre point de terminaison d'autorisation pour obtenir un code à usage unique ou très court.
Jeton d'accès : Jeton qui accorde à son porteur l'accès à une ressource. Pour limiter l'exposition qui pourrait résulter de la perte de ce jeton, celui-ci a une durée de vie limitée et expirera généralement au bout d'environ une heure.
Jeton d'actualisation Jeton de longue durée pouvant être échangé contre un nouveau jeton d'accès lorsqu'un jeton d'accès expire. Lorsque votre service s'intègre à Google, ce jeton est stocké et utilisé exclusivement par Google. Google appelle votre point de terminaison d'échange de jetons pour échanger des jetons d'actualisation contre des jetons d'accès, qui sont ensuite utilisés pour accéder aux données utilisateur.
Gestion des jetons
Les conditions de course dans les environnements en cluster et les échanges client-serveur peuvent entraîner des scénarios de synchronisation et de gestion des erreurs complexes lorsque vous travaillez avec des jetons. Exemple :
- Vous recevez une demande de nouveau jeton d'accès et vous en émettez un. En même temps, vous recevez une demande d'accès à la ressource de votre service à l'aide du jeton d'accès précédent, qui n'a pas expiré.
- La réponse de votre jeton d'actualisation n'a pas encore été reçue (ou n'a jamais été reçue) par Google. En attendant, le jeton d'actualisation précédemment valide est utilisé dans une requête de Google.
Les requêtes et les réponses peuvent arriver dans n'importe quel ordre, ou pas du tout en raison de services asynchrones exécutés dans un cluster, du comportement du réseau ou d'autres moyens.
Un état partagé immédiat et entièrement cohérent au sein et entre vos systèmes de gestion des jetons et ceux de Google ne peut pas être garanti. Plusieurs jetons valides et non expirés peuvent coexister dans ou entre les systèmes dans un court laps de temps. Pour minimiser l'impact négatif sur les utilisateurs, nous vous recommandons de procéder comme suit:
- Accepter les jetons d'accès non expirés, même après l'émission d'un nouveau jeton
- Utilisez des alternatives à la rotation des jetons d'actualisation.
- Prise en charge de plusieurs jetons d'accès et d'actualisation valides simultanément. Pour des raisons de sécurité, vous devez limiter le nombre de jetons et leur durée de vie.
Gestion de la maintenance et des pannes
Lors de la maintenance ou d'une panne imprévue, Google peut être incapable d'appeler vos points de terminaison d'autorisation ou d'échange de jetons pour obtenir des jetons d'accès et d'actualisation.
Vos points de terminaison doivent répondre avec un code d'erreur 503
et un corps vide. Dans ce cas, Google relance les requêtes d'échange de jetons ayant échoué pendant une durée limitée. Si Google peut ensuite obtenir des jetons d'actualisation et d'accès, les requêtes ayant échoué ne sont pas visibles par les utilisateurs.
Les requêtes d'échec d'un jeton d'accès génèrent une erreur visible, si elles sont lancées par un utilisateur. Les utilisateurs devront réessayer les échecs d'association si le flux OAuth 2.0 implicite est utilisé.
Recommandations
Il existe de nombreuses solutions pour minimiser l'impact de la maintenance. Voici quelques options à envisager:
Maintenez votre service existant et acheminez un nombre limité de requêtes vers votre service mis à jour. Ne migrez toutes les requêtes qu'après avoir confirmé le fonctionnement attendu.
Réduisez le nombre de requêtes de jetons pendant la période de maintenance:
Limiter les périodes de maintenance à une durée inférieure à la durée de vie du jeton d'accès.
Augmentez temporairement la durée de vie du jeton d'accès:
- Augmentez la durée de vie du jeton au-delà de la période de maintenance.
- Attendez deux fois la durée de vie de votre jeton d'accès, ce qui permet aux utilisateurs d'échanger des jetons de courte durée contre des jetons de plus longue durée.
- Entrez dans la section "Maintenance".
- Répondez aux requêtes de jeton avec un code d'erreur
503
et un corps vide. - Quittez la maintenance.
- Réduire la durée de vie du jeton à la normale.
S'inscrire avec Google
Nous aurons besoin de détails sur votre configuration OAuth 2.0 et de partager des identifiants pour activer l'association de comptes. Pour en savoir plus, consultez la section enregistrement.