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 :
检查现有用户账号(检查 intent)
Google 会调用您的令牌交换端点,以验证 Google 用户是否存在于您的系统中。如需了解参数详情,请参阅简化的关联 intent。
实现方案
如需处理 check intent,请执行以下操作:
验证请求:
- 验证
client_id、client_secret和grant_type(必须为urn:ietf:params:oauth:grant-type:jwt-bearer)。 - 使用 JWT 验证 中的条件验证
assertion(JWT)。
- 验证
查找用户:
- 检查 JWT 中的 Google 账号 ID (
sub) 或电子邮件地址是否与数据库中的用户匹配。
- 检查 JWT 中的 Google 账号 ID (
回应:
- 如果找到:返回 HTTP
200 OK,并附带{"account_found": "true"}。 - 如果未找到:返回 HTTP
404 Not Found,并附带{"account_found": "false"}。
- 如果找到:返回 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
使用“使用 Google 账号登录”功能处理账号创建事宜(创建 intent)
如果不存在任何账号,Google 会使用 intent=create 调用您的端点,以创建新用户。如需了解参数详情,请参阅 Streamlined Linking Intents。
实现方案
如需处理 create intent,请执行以下操作:
验证请求:
- 验证
client_id、client_secret和grant_type。 - 验证
assertion(JWT)。
- 验证
验证用户不存在:
- 检查您的数据库中是否已存在
sub或email。 - 如果用户 存在,请返回 HTTP
401 Unauthorized,并使用{"error": "linking_error", "login_hint": "USER_EMAIL"}强制回退到 OAuth 关联。
- 检查您的数据库中是否已存在
创建账号:
- 使用 JWT 中的
sub、email、name和picture声明创建新的用户记录。
- 使用 JWT 中的
回应:
- 在 JSON 响应 (HTTP
200 OK) 中生成并返回令牌。
- 在 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
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.