Présentation
L'_association simplifiée avec Se connecter avec Google_ ajoute Se connecter avec Google en plus de l'association OAuth. Cela offre une expérience d'association fluide aux utilisateurs Google et permet, si vous le souhaitez, de créer un compte. L'utilisateur peut ainsi créer un compte sur votre service à l'aide de son compte Google.
Pour associer un compte avec OAuth et Se connecter avec Google, procédez comme suit :
- Demandez d'abord à l'utilisateur d'autoriser l'accès à son profil Google.
- Utilisez les informations de son profil pour vérifier si le compte utilisateur existe.
- Pour les utilisateurs existants, associez les comptes.
- Si vous ne trouvez pas d'utilisateur Google correspondant dans votre système d'authentification, validez le jeton d'ID reçu de Google. Si votre service permet de créer des comptes, vous pouvez ensuite créer un utilisateur en fonction des informations de profil contenues dans le jeton d'ID.
Figure 1 : Association de compte sur le téléphone d'un utilisateur avec l'association simplifiée
Association simplifiée : flux OAuth + Se connecter avec Google
Le diagramme de séquence suivant détaille les interactions entre l'utilisateur, Google et votre point de terminaison d'échange de jetons pour l'association simplifiée.
Rôles et responsabilités
Le tableau suivant définit les rôles et les responsabilités des acteurs dans le flux d'association simplifiée.
| Acteur / Composant | Rôle LAG | Responsabilités |
|---|---|---|
| Application / serveur Google | Client OAuth | Obtient le consentement de l'utilisateur pour Se connecter avec Google, transmet les assertions d'identité (JWT) à votre serveur et stocke de manière sécurisée les jetons obtenus. |
| Point de terminaison d'échange de jetons | Fournisseur d'identité / Serveur d'autorisation | Valide les assertions d'identité, recherche les comptes existants, gère
les intents d'association de compte requis (check,
get) et l'intent create facultatif, et émet
des jetons en fonction des intents demandés. |
| API de votre service | Serveur de ressources | Fournit l'accès aux données utilisateur lorsqu'un jeton d'accès valide est présenté. |
Exigences pour l'association simplifiée
- Implémentez le flux d'association OAuth de base. Votre service doit être compatible avec les points de terminaison d'autorisation et d'échange de jetons conformes à OAuth 2.0.
- Votre point de terminaison d'échange de jetons doit être compatible avec les assertions
JWT (JSON Web Token)
et implémenter les intents
checketgetrequis, ainsi que l'intentcreatefacultatif.
Logique de décision pour l'association simplifiée
La logique suivante détermine comment les intents sont appelés lors du flux d'association simplifiée :
- L'utilisateur possède-t-il un compte dans votre système d'authentification ? (L'utilisateur décide en sélectionnant OUI ou NON)
- OUI : L'utilisateur utilise-t-il l'adresse e-mail associée à son compte Google pour se connecter à votre plate-forme ? (L'utilisateur décide en sélectionnant OUI ou NON)
- OUI : L'utilisateur possède-t-il un compte correspondant dans votre système d'authentification ? (
checkintent est appelé pour confirmer)- OUI :
getintent est appelé et le compte est associé si l'intent get renvoie un résultat positif. - NON : Créer un compte ? (L'utilisateur décide en sélectionnant OUI ou NON ; applicable uniquement si votre service permet de créer des comptes)
- OUI :
createintent est appelé et le compte est associé si l'intent create renvoie un résultat positif. - NON : Le flux d'association OAuth est déclenché, l'utilisateur est redirigé vers son navigateur et il a la possibilité d'associer son compte avec une autre adresse e-mail.
- OUI :
- OUI :
- NON : Le flux d'association OAuth est déclenché, l'utilisateur est redirigé vers son navigateur et il a la possibilité d' associer son compte avec une autre adresse e-mail.
- OUI : L'utilisateur possède-t-il un compte correspondant dans votre système d'authentification ? (
- NON : L'utilisateur possède-t-il un compte correspondant dans votre système d'authentification ? (
checkintent est appelé pour confirmer)- OUI :
getintent est appelé et le compte est associé si get intent renvoie un résultat positif. - NON : Si votre service permet de créer des comptes, l'
createintent est appelé et le compte est associé si create intent renvoie un résultat positif. Si la création de compte n'est pas possible, votre point de terminaison doit renvoyer l'erreur HTTP 401 linking_error pour déclencher le flux d'association OAuth de secours.
- OUI :
- OUI : L'utilisateur utilise-t-il l'adresse e-mail associée à son compte Google pour se connecter à votre plate-forme ? (L'utilisateur décide en sélectionnant OUI ou NON)
Recette d'implémentation
Votre point de terminaison d'échange de jetons doit implémenter les intents check et get requis, ainsi que l'intent create facultatif, pour être compatible avec l'association simplifiée.
Procédez comme suit pour gérer les différents intents :
Vérifier l'existence d'un compte utilisateur (vérifier l'intention)
Google appelle votre point de terminaison d'échange de jetons pour vérifier si l'utilisateur Google existe dans votre système. Pour en savoir plus sur les paramètres, consultez la section Intentions de liaison simplifiée.
Recette d'implémentation
Pour gérer l'intention check requise, procédez comme suit :
Valider la demande :
- Vérifiez
client_id,client_secretetgrant_type(doit êtreurn:ietf:params:oauth:grant-type:jwt-bearer). - Validez le
assertion(JWT) à l'aide des critères de la section Validation JWT.
- Vérifiez
Rechercher l'utilisateur :
- Vérifiez si l'ID de compte Google (
sub) ou l'adresse e-mail du JWT correspond à un utilisateur de votre base de données.
- Vérifiez si l'ID de compte Google (
Réagir :
- Si l'utilisateur est trouvé : renvoyez la réponse HTTP
200 OKavec{"account_found": "true"}. - Si l'utilisateur n'est pas trouvé : renvoyez la réponse HTTP
404 Not Foundavec{"account_found": "false"}.
- Si l'utilisateur est trouvé : renvoyez la réponse HTTP
Gérer l'association automatique (obtenir l'intention)
Si le compte existe, Google appelle votre point de terminaison avec intent=get pour récupérer les jetons. Pour en savoir plus sur les paramètres, consultez Intents de simplification de l'association.
Recette d'implémentation
Pour gérer l'intent get requis, procédez comme suit :
Validez la demande :
- Validez
client_id,client_secretetgrant_type. - Validez le
assertion(JWT).
- Validez
Rechercher un utilisateur :
- Vérifiez que l'utilisateur existe à l'aide de la revendication
subouemail.
- Vérifiez que l'utilisateur existe à l'aide de la revendication
Répondre :
- En cas de succès : générez et renvoyez
access_token,refresh_tokenetexpires_indans une réponse JSON (HTTP200 OK). - Si l'association échoue : renvoyez HTTP
401 Unauthorizedavec{"error": "linking_error"}et unlogin_hintfacultatif pour revenir à l'association OAuth standard.
- En cas de succès : générez et renvoyez
Gérer la création de compte à l'aide de Se connecter avec Google (intention de création)
Si votre service permet de créer des comptes et qu'aucun compte n'existe, Google appelle votre point de terminaison avec intent=create pour créer un utilisateur. Pour en savoir plus sur les paramètres, consultez Intents de simplification de l'association.
Recette d'implémentation
Pour gérer l'intent facultatif create, procédez comme suit :
Validez la demande :
- Validez
client_id,client_secretetgrant_type. - Validez le
assertion(JWT).
- Validez
Vérifiez que l'utilisateur n'existe pas :
- Vérifiez si
subouemailse trouve déjà dans votre base de données. - Si l'utilisateur existe : renvoyez HTTP
401 Unauthorizedavec{"error": "linking_error", "login_hint": "USER_EMAIL"}pour forcer le retour à l'association OAuth.
- Vérifiez si
Créer un compte :
- Utilisez les revendications
sub,email,nameetpicturedu jeton JWT pour créer un enregistrement utilisateur.
- Utilisez les revendications
Répondre :
- Générez et renvoyez des jetons dans une réponse JSON (HTTP
200 OK).
- Générez et renvoyez des jetons dans une réponse JSON (HTTP
Obtenir votre ID client pour l'API Google
Vous devrez fournir votre ID client pour l'API Google lors du processus d'enregistrement de l'association de compte . Pour obtenir votre ID client pour l'API à l'aide de le projet que vous avez créé lors des étapes d'association OAuth. Pour ce faire, procédez comme suit :
- Accédez à la page "Clients".
Créez ou sélectionnez un projet Google APIs.
Si votre projet ne possède pas d'ID client pour le type d'application Web, cliquez sur Créer un client pour en créer un. Veillez à inclure le domaine de votre site dans la zone Origines JavaScript autorisées. Lorsque vous effectuez des tests ou un développement en local, vous devez ajouter
http://localhostethttp://localhost:<port_number>au champ Origines JavaScript autorisées.
Valider votre intégration
Vous pouvez valider votre implémentation à l'aide de l' outil OAuth 2.0 Playground.
Dans l'outil, procédez comme suit :
- Cliquez sur Configuration pour ouvrir la fenêtre de configuration OAuth 2.0.
- Dans le champ OAuth flow (Flux OAuth), sélectionnez Client-side (Côté client).
- Dans le champ OAuth Endpoints (Points de terminaison OAuth), sélectionnez Custom (Personnalisé).
- Spécifiez votre point de terminaison OAuth 2.0 et l'ID client que vous avez attribué à Google dans les champs correspondants.
- Dans la section Step 1 (Étape 1), ne sélectionnez aucun champ d'application Google. Laissez plutôt ce champ vide ou saisissez un champ d'application valide pour votre serveur (ou une chaîne arbitraire si vous n'utilisez pas de champs d'application OAuth). Lorsque vous avez terminé, cliquez sur Authorize APIs (Autoriser les API).
- Dans les sections Step 2 (Étape 2) et Step 3 (Étape 3), parcourez le flux OAuth 2.0 et vérifiez que chaque étape fonctionne comme prévu.
Vous pouvez valider votre implémentation à l'aide de l'outil de démonstration de l'association de comptes Google .
Dans l'outil, procédez comme suit :
- Cliquez sur le bouton Se connecter avec Google.
- Sélectionnez le compte que vous souhaitez associer.
- Saisissez l'ID de service.
- Vous pouvez également saisir un ou plusieurs champs d'application pour lesquels vous demanderez l'accès.
- Cliquez sur Start Demo (Démarrer la démonstration).
- Lorsque vous y êtes invité, confirmez que vous pouvez donner votre consentement et refuser la demande d'association.
- Vérifiez que vous êtes redirigé vers votre plate-forme.