

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 la connexion avec Apple en tant qu'IdP du pool d'identités
<a name="apple"></a>

Les pools d'identités Amazon Cognito fonctionnent avec Sign in with Apple pour fournir une authentification fédérée aux utilisateurs de vos applications mobiles et Web. Cette section explique comment enregistrer et configurer votre application avec la fonctionnalité Se connecter avec Apple comme fournisseur d'identité.

Pour ajouter la fonctionnalité Se connecter avec Apple en tant que fournisseur d'authentification à un groupe d'identités, vous devez mener à bien deux procédures. Tout d'abord, intégrez la fonctionnalité Se connecter avec Apple dans une application, puis configurez Se connecter avec Apple dans les groupes d'identités. Pour en up-to-date savoir plus sur la configuration de Sign in with Apple, consultez la [section Configuration de votre environnement pour Sign in with Apple](https://developer.apple.com/documentation/signinwithapple/configuring-your-environment-for-sign-in-with-apple) dans la documentation destinée aux développeurs Apple.

## Configurer Se connecter avec Apple
<a name="login-with-apple-setup"></a>

Pour configurer la fonctionnalité Se connecter avec Apple en tant que fournisseur d'identité, enregistrez votre application auprès d'Apple pour recevoir un ID client.

1. Créez un [compte développeur Apple](https://developer.apple.com/programs/enroll/).

1. [Connectez-vous](https://developer.apple.com/account/#/welcome) avec vos informations d'identification Apple.

1. Dans le volet de navigation de gauche, sélectionnez **Certificates IDs et profils**.

1. Dans le volet de navigation de gauche, choisissez **Identifiants**.

1. Dans la page **Identifiants**, choisissez l'icône **\$1**.

1. Sur la page **Enregistrer un nouvel identifiant**, choisissez **App IDs**, puis choisissez **Continuer**.

1. Dans la page **Register an App ID (Enregistrer un ID d'application)**, procédez comme suit :

   1. Dans **Description**, saisissez une description.

   1. Sous **Bundle ID (ID de solution groupée),** tapez un identifiant. Notez cet **ID de solution groupée**, car vous aurez besoin de cette valeur pour configurer Apple en tant que fournisseur dans le groupe d'identités. 

   1. Sous **Capabilities (Capacités)**, choisissez **Sign In with Apple (Connexion avec Apple)**, puis **Edit (Modifier)**.

   1. Sur la page **Se connecter avec Apple : configuration de l'ID d'application**, sélectionnez le paramètre approprié pour votre application. Ensuite, choisissez **Save** (Enregistrer).

   1. Sélectionnez **Continuer**.

1. Dans la page **Confirm your App ID (Confirmer votre ID d'application)**, choisissez **Register (Inscrire)**.

1. Passez à l'étape 10 si vous souhaitez intégrer Sign in with Apple avec une application iOS native. L'étape 11 concerne les applications auxquelles vous souhaitez intégrer la connexion avec Apple JS.

1. Sur la page **Identifiants**, choisissez le IDs menu **App**, puis **Services IDs**. Choisissez l’icône **\$1**.

1. Sur la page **Enregistrer un nouvel identifiant**, sélectionnez **Services IDs**, puis choisissez **Continuer**.

1. Dans la page **Register an App ID (Enregistrer un ID d'application)**, procédez comme suit :

   1. Dans **Description**, saisissez une description.

   1. Sous **Identifier (Identifiant)**, saisissez un identifiant. Notez cet ID de services, car vous aurez besoin de cette valeur pour configurer Apple en tant que fournisseur dans votre groupe d'identités. 

   1. Sélectionnez **Sign In with Apple (Connexion avec Apple)**, puis choisissez **Configure (Configurer)**.

   1. Dans la page **Web Authentication Configuration (Configuration de l'authentification web)**, choisissez un **Primary App ID (ID d'application principale)**. Sous **Site Web URLs**, cliquez sur l'icône **\$1**. Pour **Domains and Subdomains(Domaines et Sous-domaines)**, saisissez le nom de domaine de votre application. En **retour URLs,** entrez l'URL de rappel vers laquelle l'autorisation redirige l'utilisateur une fois qu'il s'est authentifié via Sign in with Apple. 

   1. Choisissez **Suivant**.

   1. Choisissez **Continue (Continuer)**, puis **Register (Enregistrer)**.

1. Dans le volet de navigation de gauche, choisissez **Keys (Clés)**.

1. Dans la page **Keys (Clés)**, choisissez l'icône **\$1**.

1. Dans la page **Register a New Key (Enregistrer une nouvelle clé)**, procédez comme suit :

   1. Sous **Key Name (Nom de clé)**, saisissez un nom de clé. 

   1. Sélectionnez **Sign In with Apple (Connexion avec Apple)**, puis choisissez **Configure (Configurer)**.

   1. Dans la page **Configure Key (Configurer la clé)**, choisissez un **Primary App ID (ID d'application principal)**, puis **Save (Enregistrer)**.

   1. Choisissez **Continue (Continuer)**, puis **Register (Enregistrer)**.

**Note**  
Pour intégrer la connexion avec Apple à l'aide d'une application iOS native, consulter [ Implementing User Authentication with Sign in with Apple (Mise en place de l'authentification utilisateur à l'aide de la connexion avec Apple). ](https://developer.apple.com/documentation/authenticationservices/implementing-user-authentication-with-sign-in-with-apple)  
Pour intégrer la connexion avec Apple dans une plateforme native non iOS, consultez [ Sign in with Apple JS (Connexion avec Apple JS).](https://developer.apple.com/documentation/signinwithapplejs/) 

## Configurer le fournisseur externe dans la console Identités fédérées Amazon Cognito
<a name="login-with-apple-configure-provider"></a>

Utilisez la procédure suivante pour configurer votre fournisseur externe.

**Pour ajouter un fournisseur d'identité (IdP) Se connecter avec Apple**

1. Choisissez **Groupes d'identités** dans la [console Amazon Cognito](https://console.aws.amazon.com/cognito/home). Sélectionnez une réserve d'identités.

1. Choisissez l'onglet **Accès utilisateur**.

1. Sélectionnez **Ajouter un fournisseur d'identité**.

1. Choisissez **Se connecter avec Apple**.

1. Entrez l'**ID de services** du OAuth projet que vous avez créé avec [Apple Developer](https://developer.apple.com). Pour plus d'informations, consultez [Authentification des utilisateurs avec Se connecter avec Apple](https://developer.apple.com/documentation/signinwithapple/authenticating-users-with-sign-in-with-apple) (langue française non garantie) dans la *documentation de Se connecter avec Apple*.

1. 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.

     1. 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é**.

1. 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**.

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

   1. 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.

1. Cliquez sur **Enregistrer les modifications**.

## Exemples CLI d'utilisation de Sign in with Apple en tant que fournisseur dans les Identités fédérées Amazon Cognito
<a name="sign-in-with-apple-cli-examples"></a>

Cet exemple crée un groupe d'identités nommé `MyIdentityPool` avec la fonctionnalité Se connecter avec Apple comme fournisseur d'identité.

`aws cognito-identity create-identity-pool --identity-pool-name MyIdentityPool --supported-login-providers appleid.apple.com="sameple.apple.clientid"`

 Pour plus d'informations, consultez [Create identity pool (Créer un groupe d'identités)](https://docs.aws.amazon.com/cli/latest/reference/cognito-identity/create-identity-pool.html) 

**Générer un ID d'identité Amazon Cognito**  
 Cet exemple génère (ou extrait) un ID Amazon Cognito. Il s'agit d'une API publique, vous n'avez donc pas besoin d'informations d'identification pour appeler cette API.

`aws cognito-identity get-id --identity-pool-id SampleIdentityPoolId --logins appleid.apple.com="SignInWithAppleIdToken"`

Pour plus d'informations, consultez [get-id.(obtenir-id)](https://docs.aws.amazon.com/cli/latest/reference/cognito-identity/get-id.html) 

**Obtenir des informations d'identification pour un ID d'identité Amazon Cognito**  
Cet exemple renvoie les informations d'identification pour l'ID d'identité fourni et la connexion avec un identifiant Apple. Il s'agit d'une API publique, vous n'avez donc pas besoin d'informations d'identification pour appeler cette API.

`aws cognito-identity get-credentials-for-identity --identity-id SampleIdentityId --logins appleid.apple.com="SignInWithAppleIdToken" `

Pour de plus amples informations, consultez [get-credentials-for-identity](https://docs.aws.amazon.com/cli/latest/reference/cognito-identity/get-credentials-for-identity.html). 

## Utiliser Se connecter avec Apple : Android
<a name="set-up-apple-1.android"></a>

Apple ne fournit pas de SDK compatible avec la connexion avec Apple pour Android. Vous pouvez utiliser le flux Web dans une vue Web à la place.
+ Pour configurer la connexion avec Apple dans votre application, veuillez consulter [Configuring Your Webpage for Sign In with Apple (Configurer votre page Web avec la connexion avec Apple)](https://developer.apple.com/documentation/signinwithapple/configuring-your-webpage-for-sign-in-with-apple) dans la documentation Apple.
+ Pour ajouter un bouton **Se connecter avec Apple** à votre interface utilisateur Android, suivez la section [Afficher les boutons de connexion avec Apple sur le Web](https://developer.apple.com/documentation/signinwithapple/displaying-sign-in-with-apple-buttons-on-the-web) dans la documentation Apple.
+ Pour authentifier les utilisateurs de manière sécurisée avec la fonctionnalité Se connecter avec Apple, suivez les instructions d'[authentification des utilisateurs avec la fonctionnalité Se connecter avec Apple](https://developer.apple.com/documentation/signinwithapple/authenticating-users-with-sign-in-with-apple) dans la documentation Apple.

Sign in with Apple utilise un objet session pour suivre son état. Amazon Cognito utilise le jeton d'identification 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 

```
@Override
public void onSuccess(Bundle response) {
    String token = response.getString("id_token");
    Map<String, String> logins = new HashMap<String, String>();
    logins.put("appleid.apple.com", token);
    credentialsProvider.setLogins(logins);
}
```

## Utiliser Se connecter avec Apple : iOS - Objective-C
<a name="set-up-apple-1.ios-objc"></a>

Apple a fourni la prise en charge de SDK pour Se connecter avec Apple dans les applications iOS natives. Pour mettre en place l'authentification utilisateur par le biais de la connexion avec Apple dans les appareils iOS natifs, veuillez consulter [Implementing User Authentication with Sign in with Apple (Mettre en place l'authentification de l'utilisateur par le biais de la connexion avec Apple)](https://developer.apple.com/documentation/authenticationservices/implementing-user-authentication-with-sign-in-with-apple) dans la documentation Apple.

Amazon Cognito utilise le jeton d'identification pour authentifier l'utilisateur, générer l'identifiant unique et, si nécessaire, accorder à l'utilisateur l'accès à d'autres ressources. AWS 

```
(void)finishedWithAuth: (ASAuthorizationAppleIDCredential *)auth error: (NSError *) error {
        NSString *idToken = [ASAuthorizationAppleIDCredential objectForKey:@"identityToken"];
        credentialsProvider.logins = @{ "appleid.apple.com": idToken };
    }
```

## Utiliser Se connecter avec Apple : iOS - Swift
<a name="set-up-apple-1.ios-swift"></a>

Apple a fourni la prise en charge de SDK pour Se connecter avec Apple dans les applications iOS natives. Pour mettre en place l'authentification utilisateur par le biais de la connexion avec Apple dans les appareils iOS natifs, veuillez consulter [Implementing User Authentication with Sign in with Apple (Mettre en place l'authentification de l'utilisateur par le biais de la connexion avec Apple)](https://developer.apple.com/documentation/authenticationservices/implementing-user-authentication-with-sign-in-with-apple) dans la documentation Apple.

Amazon Cognito utilise le jeton d'identification pour authentifier l'utilisateur, générer l'identifiant unique et, si nécessaire, accorder à l'utilisateur l'accès à d'autres ressources. AWS 

Pour plus d'informations sur la configuration de la fonctionnalité Se connecter avec Apple dans iOS, consultez les instructions de [configuration de la fonctionnalité Se connecter avec Apple](https://docs.amplify.aws/sdk/auth/federated-identities/q/platform/ios#set-up-sign-in-with-apple)

```
func finishedWithAuth(auth: ASAuthorizationAppleIDCredential!, error: NSError!) {
    if error != nil {
      print(error.localizedDescription)
    }
    else {
      let idToken = auth.identityToken,
      credentialsProvider.logins = ["appleid.apple.com": idToken!]
    }
}
```

## Utilisez Se connecter avec Apple : JavaScript
<a name="set-up-apple-1.javascript"></a>

Apple ne fournit pas de SDK compatible avec Sign in with Apple for JavaScript. Vous pouvez utiliser le flux Web dans une vue Web à la place.
+ Pour configurer la connexion avec Apple dans votre application, veuillez consulter [Configuring Your Webpage for Sign In with Apple (Configurer votre page Web avec la connexion avec Apple)](https://developer.apple.com/documentation/signinwithapple/configuring-your-webpage-for-sign-in-with-apple) dans la documentation Apple.
+ Pour ajouter un bouton **Se connecter avec Apple** à votre interface JavaScript utilisateur, suivez la section [Afficher les boutons de connexion avec Apple sur le Web](https://developer.apple.com/documentation/signinwithapple/displaying-sign-in-with-apple-buttons-on-the-web) dans la documentation Apple.
+ Pour authentifier les utilisateurs de manière sécurisée avec la fonctionnalité Se connecter avec Apple, suivez les instructions d'[authentification des utilisateurs avec la fonctionnalité Se connecter avec Apple](https://developer.apple.com/documentation/signinwithapple/authenticating-users-with-sign-in-with-apple) dans la documentation Apple.

Sign in with Apple utilise un objet session pour suivre son état. Amazon Cognito utilise le jeton d'identification 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 

```
function signinCallback(authResult) {
     // Add the apple's id token to the Amazon Cognito credentials login map.
     AWS.config.credentials = new AWS.CognitoIdentityCredentials({
        IdentityPoolId: 'IDENTITY_POOL_ID',
        Logins: {
           'appleid.apple.com': authResult['id_token']
        }
     });

     // Obtain AWS credentials
     AWS.config.credentials.get(function(){
        // Access AWS resources here.
     });
}
```