Présentation
L'association simplifiée avec Se connecter avec Google basée sur OAuth ajoute Se connecter avec Google en plus de l'association OAuth. Cela permet aux utilisateurs Google de bénéficier d'une expérience d'association fluide et de créer un compte sur votre service à l'aide de leur compte Google.
Pour associer un compte avec OAuth et Se connecter avec Google, suivez ces étapes générales :
- 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'identité reçu de Google. Vous pouvez ensuite créer un utilisateur en fonction des informations de profil contenues dans le jeton d'identité.
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 responsabilités des acteurs du flux d'association simplifiée.
| Acteur / Composant | Rôle dans la LAG | Responsabilités |
|---|---|---|
| Application / Serveur Google | Client OAuth | Obtient le consentement 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. |
| Votre 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 (check, get, create) et émet des jetons en fonction des intents demandés. |
| Votre API Service | Serveur de ressources | Fournit l'accès aux données utilisateur lorsqu'un jeton d'accès valide est présenté. |
Conditions requises 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 JSON Web Token (JWT) et implémenter les intents
check,createetget.
Logique de décision pour l'association simplifiée
La logique suivante détermine comment les intents sont appelés lors du parcours d'association simplifiée :
- L'utilisateur dispose-t-il d'un compte dans votre système d'authentification ? (L'utilisateur décide en sélectionnant OUI ou NON)
- OUI : l'utilisateur se connecte-t-il à votre plate-forme avec l'adresse e-mail associée à son compte Google ? (L'utilisateur décide en sélectionnant OUI ou NON)
- OUI : l'utilisateur dispose-t-il d'un compte correspondant dans votre système d'authentification ? (
check intentest appelé pour confirmer)- OUI :
get intentest appelé et le compte est associé si l'intention de récupération est renvoyée avec succès. - NON : Créer un compte ? (L'utilisateur décide en sélectionnant OUI ou NON)
- OUI :
create intentest appelé et le compte est associé si l'intention de création est renvoyée avec succès. - NON : le flux d'association OAuth est déclenché, l'utilisateur est redirigé vers son navigateur et il a la possibilité d'associer un autre 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 un autre e-mail.
- OUI : l'utilisateur dispose-t-il d'un compte correspondant dans votre système d'authentification ? (
- NON : l'utilisateur dispose-t-il d'un compte correspondant dans votre système d'authentification ? (
check intentest appelé pour confirmer)- OUI :
get intentest appelé et le compte est associé si l'intention de récupération est renvoyée avec succès. - NON :
create intentest appelé et le compte est associé si l'intention de création est renvoyée avec succès.
- OUI :
- OUI : l'utilisateur se connecte-t-il à votre plate-forme avec l'adresse e-mail associée à son compte Google ? (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, get et create pour prendre en charge l'association simplifiée.
Pour gérer les différentes intentions, procédez comme suit :
Check for an existing user account (check intent)
Google calls your token exchange endpoint to verify if the Google user exists in your system. For parameter details, see Streamlined Linking Intents.
Implementation Recipe
To handle the check intent, perform the following actions:
Validate the request:
- Verify
client_id,client_secret, andgrant_type(must beurn:ietf:params:oauth:grant-type:jwt-bearer). - Validate the
assertion(JWT) using the criteria in JWT Validation.
- Verify
Lookup user:
- Check if the Google Account ID (
sub) or email address in the JWT matches a user in your database.
- Check if the Google Account ID (
Respond:
- If found: Return HTTP
200 OKwith{"account_found": "true"}. - If not found: Return HTTP
404 Not Foundwith{"account_found": "false"}.
- If found: Return 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, 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 (intent de création)
Si aucun compte n'existe, Google appelle votre point de terminaison avec intent=create pour créer un nouvel 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 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 les API Google
Vous devrez fournir votre ID client de l'API Google lors de la procédure d'enregistrement de l'association de compte. Pour obtenir votre ID client API à l'aide du projet que vous avez créé lors de la procédure 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
您可以使用 OAuth 2.0 Playground 工具验证您的实现。
在该工具中,执行以下步骤:
- 点击配置 以打开“OAuth 2.0 配置”窗口。
- 在 OAuth flow(OAuth 流程)字段中,选择 Client-side(客户端)。
- 在 OAuth Endpoints 字段中,选择 Custom。
- 在相应字段中指定您的 OAuth 2.0 端点以及您分配给 Google 的客户端 ID。
- 在第 1 步部分中,请勿选择任何 Google 范围。请将此字段留空,或输入适用于您服务器的范围(如果您不使用 OAuth 范围,则输入任意字符串)。完成后,点击 Authorize APIs。
- 在第 2 步和第 3 步部分中,完成 OAuth 2.0 流程,并验证每个步骤是否按预期运行。
您可以使用 Google 账号关联演示工具验证您的实现。
在该工具中,执行以下步骤:
- 点击使用 Google 账号登录按钮。
- 选择您要关联的账号。
- 输入服务 ID。
- (可选)输入您将请求访问的一个或多个范围。
- 点击开始演示。
- 当系统提示时,请确认您可以同意或拒绝关联请求。
- 确认您已重定向到相应平台。