Connecte ou inscrit un utilisateur à l'aide des identifiants d'un fournisseur d'identité (IdP). Pour ce faire, vous devez fournir manuellement des identifiants d'IDP ou la réponse d'autorisation obtenue via la requête d'autorisation de accounts.createAuthUri. Si la connexion réussit, un nouveau jeton d'ID Identity Platform et un nouveau jeton d'actualisation sont émis pour l'utilisateur authentifié.
Un nouveau compte utilisateur Identity Platform est créé si l'utilisateur ne s'est pas déjà connecté à l'IdP avec le même compte. De plus, lorsque le paramètre "Un compte par adresse e-mail" est activé, aucun compte utilisateur Identity Platform ne doit exister avec la même adresse e-mail pour qu'un nouveau compte utilisateur puisse être créé.
Une clé API est requise dans la requête pour identifier le projet Google Cloud.
Requête HTTP
POST https://identitytoolkit.googleapis.com/v1/accounts:signInWithIdp
L'URL utilise la syntaxe de transcodage gRPC.
Corps de la requête
Le corps de la requête contient des données présentant la structure suivante :
Représentation JSON |
---|
{ "requestUri": string, "postBody": string, "pendingIdToken": string, "returnRefreshToken": boolean, "sessionId": string, "delegatedProjectNumber": string, "idToken": string, "returnSecureToken": boolean, "returnIdpCredential": boolean, "autoCreate": boolean, "tenantId": string, "pendingToken": string } |
Champs | |
---|---|
requestUri |
Obligatoire. URL vers laquelle l'IDP redirige l'utilisateur. Vous pouvez définir cette valeur sur |
postBody |
Si l'utilisateur se connecte avec une réponse d'autorisation obtenue via une demande d'autorisation accounts.createAuthUri précédente, il s'agit du corps du rappel HTTP POST de l'IDP, le cas échéant. Sinon, si l'utilisateur se connecte avec des identifiants d'IDP fournis manuellement, il doit s'agir d'un formulaire encodé en URL contenant les identifiants (par exemple, un jeton d'ID ou un jeton d'accès pour les IdP OAuth 2.0) et l'ID du fournisseur de l'IDP qui a émis les identifiants. Par exemple, si l'utilisateur se connecte au fournisseur Google à l'aide d'un jeton d'ID Google, cette valeur doit être définie sur id_token Si l'utilisateur se connecte au fournisseur Facebook à l'aide d'un jeton d'authentification Facebook, ce champ doit être défini sur id_token Si l'utilisateur se connecte au fournisseur Facebook à l'aide d'un jeton d'accès Facebook, cette valeur doit être définie sur access_token Si l'utilisateur se connecte au fournisseur Twitter à l'aide d'identifiants Twitter OAuth 1.0, ce paramètre doit être défini sur access_token |
pendingIdToken |
|
returnRefreshToken |
Indique si le jeton d'actualisation OAuth doit être renvoyé à partir du fournisseur d'identité, le cas échéant. |
sessionId |
ID de session renvoyé par un appel accounts.createAuthUri précédent. Ce champ est validé par rapport à cet ID de session pour éviter les attaques par fixation de session. Obligatoire si l'utilisateur se connecte avec une réponse d'autorisation issue d'une demande d'autorisation accounts.createAuthUri précédente. |
delegatedProjectNumber |
|
idToken |
Un jeton d'ID Identity Platform valide. Si ce paramètre est transmis, le compte de l'utilisateur auprès du fournisseur d'identité sera associé au compte représenté par ce jeton d'identité. |
returnSecureToken |
Doit toujours être défini sur "true". |
returnIdpCredential |
Indique si les identifiants OAuth doivent être renvoyés ou non par le fournisseur d'identité en cas d'erreurs |
autoCreate |
|
tenantId |
ID du locataire Identity Platform auquel l'utilisateur se connecte. Si ce paramètre n'est pas défini, l'utilisateur se connectera au projet Identity Platform par défaut. |
pendingToken |
Chaîne opaque issue d'une réponse accounts.signInWithIdp précédente. Si elle est définie, elle peut être utilisée pour répéter l'opération de connexion à partir de l'opération accounts.signInWithIdp précédente. Cela peut se produire si l'utilisateur doit confirmer les informations de son compte lors d'une tentative de connexion fédérée précédente ou s'il doit associer des comptes. |
Corps de la réponse
Message de réponse pour accounts.signInWithIdp.
Si la requête aboutit, le corps de la réponse contient des données qui ont la structure suivante :
Représentation JSON |
---|
{
"federatedId": string,
"providerId": string,
"email": string,
"emailVerified": boolean,
"firstName": string,
"fullName": string,
"lastName": string,
"nickName": string,
"language": string,
"timeZone": string,
"photoUrl": string,
"dateOfBirth": string,
"inputEmail": string,
"originalEmail": string,
"localId": string,
"emailRecycled": boolean,
"displayName": string,
"idToken": string,
"context": string,
"verifiedProvider": [
string
],
"needConfirmation": boolean,
"oauthAccessToken": string,
"oauthRefreshToken": string,
"oauthExpireIn": integer,
"oauthAuthorizationCode": string,
"needEmail": boolean,
"oauthTokenSecret": string,
"refreshToken": string,
"expiresIn": string,
"oauthIdToken": string,
"screenName": string,
"rawUserInfo": string,
"errorMessage": string,
"isNewUser": boolean,
"kind": string,
"pendingToken": string,
"tenantId": string,
"mfaPendingCredential": string,
"mfaInfo": [
{
object ( |
Champs | |
---|---|
federatedId |
ID de compte de l'utilisateur auprès du fournisseur d'identité. Toujours présent dans la réponse. |
providerId |
ID du fournisseur de l'IDP auquel l'utilisateur se connecte. Toujours présent dans la réponse. |
email |
Adresse e-mail du compte de l'utilisateur auprès de l'IDP. |
emailVerified |
Indique si l'adresse e-mail du compte utilisateur est validée. |
firstName |
Prénom associé au compte de l'utilisateur auprès de l'IDP. |
fullName |
Nom complet du compte de l'utilisateur auprès du fournisseur d'identité. |
lastName |
Nom de famille associé au compte de l'utilisateur auprès du fournisseur d'identité. |
nickName |
Pseudo du compte de l'utilisateur auprès du fournisseur d'identité. |
language |
Préférence linguistique du compte de l'utilisateur auprès du fournisseur d'identité. |
timeZone |
Fuseau horaire du compte de l'utilisateur auprès du fournisseur d'identité. |
photoUrl |
URL de la photo de profil de l'utilisateur sur l'IDP. |
dateOfBirth |
Date de naissance du compte de l'utilisateur auprès du fournisseur d'identité. |
inputEmail |
|
originalEmail |
Adresse e-mail principale (de premier niveau) du compte Identity Platform de l'utilisateur, si elle est différente de l'adresse e-mail du fournisseur d'identité. Ne s'affiche que si le paramètre "Un compte par adresse e-mail" est activé. |
localId |
ID de l'utilisateur Identity Platform authentifié. Toujours présent dans la réponse. |
emailRecycled |
Indique si un compte utilisateur Identity Platform existe avec la même adresse e-mail, mais associé à un autre compte auprès du même IdP. Présent uniquement si le paramètre "Un compte par adresse e-mail" est activé et que l'adresse e-mail de l'IDP est validée. |
displayName |
Nom à afficher du compte de l'utilisateur auprès de l'IDP. |
idToken |
Jeton d'ID Identity Platform de l'utilisateur authentifié. |
context |
Chaîne opaque définie dans accounts.createAuthUri, qui permet de conserver des informations contextuelles entre la requête d'authentification et le rappel de l'IDP. |
verifiedProvider[] |
Liste des ID de fournisseur auxquels l'utilisateur peut se connecter pour résoudre une erreur |
needConfirmation |
Indique si un compte utilisateur Identity Platform existe ou non avec la même adresse e-mail que le compte actuellement connecté au fournisseur d'identité, et si l'adresse e-mail du compte n'est pas validée auprès du fournisseur d'identité. L'utilisateur devra se connecter au compte Identity Platform existant, puis y associer les identifiants actuels du fournisseur d'identité. Ne s'affiche que si le paramètre "Un compte par adresse e-mail" est activé. |
oauthAccessToken |
Le jeton d'accès OAuth de l'IDP, s'il est disponible. |
oauthRefreshToken |
Le jeton d'actualisation OAuth 2.0 de l'IDP, s'il est disponible et si |
oauthExpireIn |
Nombre de secondes avant l'expiration du jeton d'accès OAuth de l'IDP. |
oauthAuthorizationCode |
Code d'autorisation OAuth 2.0, le cas échéant Uniquement présent pour le fournisseur Google. |
needEmail |
|
oauthTokenSecret |
Secret du jeton OAuth 1.0 de l'IDP, s'il est disponible. Uniquement présent pour le fournisseur Twitter. |
refreshToken |
Jeton d'actualisation Identity Platform de l'utilisateur authentifié. |
expiresIn |
Nombre de secondes avant l'expiration du jeton d'ID Identity Platform. |
oauthIdToken |
Le jeton d'identification OpenID Connect du fournisseur d'identité, s'il est disponible. |
screenName |
Nom d'utilisateur du compte de l'utilisateur auprès du fournisseur d'identité Twitter ou nom d'utilisateur du compte de l'utilisateur auprès du fournisseur d'identité GitHub. |
rawUserInfo |
Réponse JSON convertie en chaîne contenant toutes les données correspondant au compte de l'utilisateur auprès de l'IDP. |
errorMessage |
Message d'erreur renvoyé si |
isNewUser |
Indique si un compte Identity Platform a été créé pour l'utilisateur authentifié. |
kind |
|
pendingToken |
Chaîne opaque pouvant être utilisée comme identifiant du fournisseur d'identité auquel l'utilisateur se connecte. Le jeton en attente obtenu ici peut être défini dans une future requête accounts.signInWithIdp pour reconnecter le même utilisateur avec l'IDP. |
tenantId |
Valeur du champ |
mfaPendingCredential |
Chaîne opaque qui sert de preuve que l'utilisateur a réussi l'authentification par premier facteur. |
mfaInfo[] |
Informations sur les fournisseurs d'authentification multifacteur activés pour le compte. Présent si l'utilisateur doit se connecter à l'aide de l'authentification multifacteur. |
Champs d'application des autorisations
Nécessite l'un des champs d'application OAuth suivants :
https://www.googleapis.com/auth/identitytoolkit
https://www.googleapis.com/auth/cloud-platform
Pour en savoir plus, consultez Authentication Overview.