Configuration de Facebook en tant qu'IdP de pool d'identités - Amazon Cognito

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration de Facebook en tant qu'IdP de pool d'identités

Les pools d'identités Amazon Cognito fonctionnent avec Facebook pour fournir une authentification fédérée aux utilisateurs de votre application. Cette section explique comment enregistrer et configurer votre application avec Facebook comme fournisseur d'identité.

Configuration de Facebook

Enregistrez votre application auprès de Facebook avant d'authentifier les utilisateurs de Facebook et d'interagir avec FacebookAPIs.

Le portail des développeurs Facebook vous aide à configurer votre application. Procédez comme suit avant d'intégrer Facebook dans votre groupe d'identités Amazon Cognito :

Note

La fédération des groupes d'identités Amazon Cognito n'est pas compatible avec Facebook Limited Login. Pour plus d'informations sur la façon de configurer la connexion à Facebook pour iOS sans dépasser les autorisations définies pour la connexion limitée, voir Connexion à Facebook pour iOS - Démarrage rapide sur Meta pour les développeurs.

Configuration de Facebook
  1. Sur le portail des développeurs Facebook, connectez-vous avec vos informations d'identification Facebook.

  2. Dans le menu Apps (Applications), sélectionnez Add a New App (Ajouter une nouvelle application).

  3. Sélectionnez une plateforme et terminer le processus de démarrage rapide.

Android

Pour plus d'informations sur la façon d'intégrer des applications Android avec Facebook Login, consultez le Guide de démarrage Facebook.

iOS : Objective-C

Pour plus d'informations sur la façon d'intégrer des applications iOS Objective-C avec Facebook Login, consultez le Guide de démarrage Facebook.

iOS : Swift

Pour plus d'informations sur la façon d'intégrer des applications iOS Swift avec Facebook Login, consultez le Guide de démarrage Facebook.

JavaScript

Pour plus d'informations sur la façon d'intégrer des applications JavaScript Web à Facebook Login, consultez le guide de démarrage de Facebook.

Unity

Pour plus d'informations sur la façon d'intégrer des applications Unity avec Facebook Login, consultez le Guide de démarrage Facebook.

Xamarin

Pour ajouter l'authentification Facebook, suivez d'abord le flux approprié ci-dessous pour SDK intégrer Facebook dans votre application. Les groupes d'identité Amazon Cognito utilisent le jeton d'accès Facebook pour générer un identifiant utilisateur unique associé à une identité Amazon Cognito.

Configuration d'un fournisseur d'identité dans la console des réserves d'identités Amazon Cognito

Utilisez la procédure suivante pour configurer votre fournisseur d'identité.

Pour ajouter un fournisseur d'identité (IdP) Facebook
  1. Choisissez Groupes d'identités dans la console Amazon Cognito. Sélectionnez une réserve d'identités.

  2. Choisissez l'onglet Accès utilisateur.

  3. Sélectionnez Ajouter un fournisseur d'identité.

  4. Choisissez Facebook.

  5. Entrez l'ID d'application du OAuth projet que vous avez créé sur Meta for Developers. Pour plus d'informations, consultez Facebook Login (langue française non garantie) dans la documentation de Meta for Developers.

  6. Pour définir le rôle demandé par Amazon Cognito lorsqu'il délivre des informations d'identification aux utilisateurs qui se sont authentifiés auprès de ce fournisseur, configurez Paramètres de rôle.

    1. Vous pouvez attribuer aux utilisateurs de ce fournisseur d'identité le rôle par défaut que vous avez configuré lorsque vous avez configuré votre rôle authentifié, ou vous pouvez sélectionner Choisir un rôle avec des règles.

      1. Si vous avez choisi Choisir un rôle avec des règles, saisissez la demande source issue de l'authentification de votre utilisateur, l'opérateur avec lequel vous souhaitez comparer ce champ standard, la valeur qui entraînera une correspondance avec ce choix de rôle et le rôle que vous souhaitez attribuer si l'attribution de rôle correspond. Sélectionnez Ajouter un autre pour créer une règle supplémentaire basée sur une condition différente.

      2. Choisissez une résolution de rôle. Lorsque les champs standard de votre utilisateur ne correspondent pas à vos règles, vous pouvez refuser les informations d'identification ou émettre des informations d'identification pour votre rôle authentifié.

  7. Pour modifier les balises de principal qu'Amazon Cognito attribue lorsqu'il délivre des informations d'identification aux utilisateurs qui se sont authentifiés auprès de ce fournisseur, configurez Attributs de contrôle d'accès.

    1. Pour n'appliquer aucune balise de principal, choisissez Inactif.

    2. Pour appliquer les balises de principal en fonction des champs standard sub et aud, choisissez Utiliser les mappages par défaut.

    3. Pour créer votre propre schéma personnalisé d'attributs pour les balises de principal, choisissez Utiliser des mappages personnalisés. Saisissez ensuite une clé de balise que vous souhaitez obtenir à partir de chaque demande que vous souhaitez représenter dans une balise.

  8. Sélectionnez Enregistrer les modifications.

Utilisation de Facebook

Android

Pour ajouter l'authentification Facebook, suivez d'abord le guide Facebook et intégrez le Facebook SDK dans votre application. Ajoutez ensuite un bouton Login with Facebook (Se connecter avec Facebook) dans votre interface utilisateur Android. Le Facebook SDK utilise un objet de session pour suivre son état. Amazon Cognito utilise le jeton d'accès de cet objet de session pour authentifier l'utilisateur, générer l'identifiant unique et, si nécessaire, accorder à l'utilisateur l'accès à d'autres ressources. AWS

Après avoir authentifié votre utilisateur auprès de FacebookSDK, ajoutez le jeton de session au fournisseur d'informations d'identification Amazon Cognito.

Facebook SDK 4.0 ou version ultérieure :

Map<String, String> logins = new HashMap<String, String>(); logins.put("graph.facebook.com", AccessToken.getCurrentAccessToken().getToken()); credentialsProvider.setLogins(logins);

Facebook SDK avant la version 4.0 :

Map<String, String> logins = new HashMap<String, String>(); logins.put("graph.facebook.com", Session.getActiveSession().getAccessToken()); credentialsProvider.setLogins(logins);

Le processus de connexion à Facebook initialise une session singleton dans son. SDK L'objet de session Facebook contient un OAuth jeton qu'Amazon Cognito utilise pour générer des AWS informations d'identification pour votre utilisateur final authentifié. Amazon Cognito utilise également ce jeton pour rechercher dans votre base de données utilisateur l'existence d'un utilisateur qui correspond à cette identité Facebook particulière. Si l'utilisateur existe déjà, API renvoie l'identifiant existant. Dans le cas contraire, le API renvoie un nouvel identifiant. Le client met SDK automatiquement en cache les identifiants sur l'appareil local.

Note

Après avoir défini le mappage des connexions, appelez refresh ou récupérez get les AWS informations d'identification.

iOS : Objective-C

Pour ajouter l'authentification Facebook, suivez d'abord le guide Facebook et intégrez le Facebook SDK dans votre application. Ajoutez ensuite un bouton « Login with Facebook » à votre interface utilisateur Le Facebook SDK utilise un objet de session pour suivre son état. Amazon Cognito utilise le jeton d'accès de cet objet session pour authentifier l'utilisateur et le lier à un groupe d'identités Amazon Cognito (Identités fédérées) unique.

Pour fournir le jeton d'accès Facebook à Amazon Cognito, implémentez le AWSIdentityProviderManagerprotocole.

Quand vous implémentez la méthode logins, renvoyez un dictionnaire contenant AWSIdentityProviderFacebook. Ce dictionnaire fait office de clé et le jeton d'accès actuel de l'utilisateur Facebook authentifié fait office de valeur, comme dans l'exemple de code suivant.

- (AWSTask<NSDictionary<NSString *, NSString *> *> *)logins { FBSDKAccessToken* fbToken = [FBSDKAccessToken currentAccessToken]; if(fbToken){ NSString *token = fbToken.tokenString; return [AWSTask taskWithResult: @{ AWSIdentityProviderFacebook : token }]; }else{ return [AWSTask taskWithError:[NSError errorWithDomain:@"Facebook Login" code:-1 userInfo:@{@"error":@"No current Facebook access token"}]]; } }

Lorsque vous instanciez AWSCognitoCredentialsProvider, transmettez la classe qui implémente AWSIdentityProviderManager comme valeur de identityProviderManager dans le constructeur. Pour plus d'informations, rendez-vous sur la page de AWSCognitoCredentialsProviderréférence et choisissez initWithRegionType : identityPoolId : identityProviderManager.

iOS : Swift

Pour ajouter l'authentification Facebook, suivez d'abord le guide Facebook et intégrez le Facebook SDK dans votre application. Ajoutez ensuite un bouton « Login with Facebook » à votre interface utilisateur Le Facebook SDK utilise un objet de session pour suivre son état. Amazon Cognito utilise le jeton d'accès de cet objet session pour authentifier l'utilisateur et le lier à un groupe d'identités Amazon Cognito (Identités fédérées) unique.

Note

La fédération des groupes d'identités Amazon Cognito n'est pas compatible avec Facebook Limited Login. Pour plus d'informations sur la façon de configurer la connexion à Facebook pour iOS sans dépasser les autorisations définies pour la connexion limitée, voir Connexion à Facebook pour iOS - Démarrage rapide sur Meta pour les développeurs.

Pour fournir le jeton d'accès Facebook à Amazon Cognito, implémentez le AWSIdentityProviderManagerprotocole.

Quand vous implémentez la méthode logins, renvoyez un dictionnaire contenant AWSIdentityProviderFacebook. Ce dictionnaire fait office de clé et le jeton d'accès actuel de l'utilisateur Facebook authentifié fait office de valeur, comme dans l'exemple de code suivant.

class FacebookProvider: NSObject, AWSIdentityProviderManager { func logins() -> AWSTask<NSDictionary> { if let token = AccessToken.current?.authenticationToken { return AWSTask(result: [AWSIdentityProviderFacebook:token]) } return AWSTask(error:NSError(domain: "Facebook Login", code: -1 , userInfo: ["Facebook" : "No current Facebook access token"])) } }

Lorsque vous instanciez AWSCognitoCredentialsProvider, transmettez la classe qui implémente AWSIdentityProviderManager comme valeur de identityProviderManager dans le constructeur. Pour plus d'informations, rendez-vous sur AWSCognitoCredentialsProviderpage de référence et choisissez initWithRegionType : identityPoolId : identityProviderManager.

JavaScript

Pour ajouter l'authentification Facebook, suivez les instructions fournies dans la page Facebook Login pour le web et ajoutez le bouton Login with Facebook (Se connecter avec Facebook) sur votre site web. Le Facebook SDK utilise un objet de session pour suivre son état. Amazon Cognito utilise le jeton d'accès de cet objet de session pour authentifier l'utilisateur, générer l'identifiant unique et, si nécessaire, accorder à l'utilisateur l'accès à d'autres ressources. AWS

Après avoir authentifié votre utilisateur auprès de FacebookSDK, ajoutez le jeton de session au fournisseur d'informations d'identification Amazon Cognito.

FB.login(function (response) { // Check if the user logged in successfully. if (response.authResponse) { console.log('You are now logged in.'); // Add the Facebook access token to the Amazon Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { 'graph.facebook.com': response.authResponse.accessToken } }); // Obtain AWS credentials AWS.config.credentials.get(function(){ // Access AWS resources here. }); } else { console.log('There was a problem logging you in.'); } });

Facebook SDK obtient un OAuth jeton qu'Amazon Cognito utilise pour AWS générer les informations d'identification de votre utilisateur final authentifié. Amazon Cognito utilise également ce jeton pour rechercher dans votre base de données utilisateur l'existence d'un utilisateur correspondant à cette identité Facebook particulière. Si l'utilisateur existe déjà, API renvoie l'identifiant existant. Dans le cas contraire, elle renvoie un nouvel identifiant. Les identifiants sont automatiquement mis en cache par le client SDK sur l'appareil local.

Note

Après avoir configuré le mappage des connexions, effectuez un appel à refresh ou get pour obtenir les informations d'identification. Pour un exemple de code, voir « Cas d'utilisation 17, Intégration de groupes d'utilisateurs à Cognito Identity » dans le JavaScript README fichier.

Unity

Pour ajouter l'authentification Facebook, suivez d'abord le guide Facebook et intégrez le Facebook SDK dans votre application. Amazon Cognito utilise le jeton d'accès Facebook de l'objet FB pour générer un identifiant d'utilisateur unique associé à une identité Amazon Cognito.

Après avoir authentifié votre utilisateur sur FacebookSDK, ajoutez le jeton de session au fournisseur d'informations d'identification Amazon Cognito :

void Start() { FB.Init(delegate() { if (FB.IsLoggedIn) { //User already logged in from a previous session AddFacebookTokenToCognito(); } else { FB.Login ("email", FacebookLoginCallback); } }); } void FacebookLoginCallback(FBResult result) { if (FB.IsLoggedIn) { AddFacebookTokenToCognito(); } else { Debug.Log("FB Login error"); } } void AddFacebookTokenToCognito() { credentials.AddLogin ("graph.facebook.com", AccessToken.CurrentAccessToken.TokenString); }

Avant d'utiliser FB.AccessToken, appelez FB.Login() et assurez-vous que FB.IsLoggedIn a pour valeur true.

Xamarin

Xamarin pour Android :

public void InitializeFacebook() { FacebookSdk.SdkInitialize(this.ApplicationContext); callbackManager = CallbackManagerFactory.Create(); LoginManager.Instance.RegisterCallback(callbackManager, new FacebookCallback &lt; LoginResult &gt; () { HandleSuccess = loginResult = &gt; { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new activity }, HandleCancel = () = &gt; { //throw error message }, HandleError = loginError = &gt; { //throw error message } }); LoginManager.Instance.LogInWithReadPermissions(this, new List &lt; string &gt; { "public_profile" }); }

Xamarin pour iOS :

public void InitializeFacebook() { LoginManager login = new LoginManager(); login.LogInWithReadPermissions(readPermissions.ToArray(), delegate(LoginManagerLoginResult result, NSError error) { if (error != null) { //throw error message } else if (result.IsCancelled) { //throw error message } else { var accessToken = loginResult.AccessToken; credentials.AddLogin("graph.facebook.com", accessToken.Token); //open new view controller } }); }