

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 d'un fournisseur OIDC en tant qu'IdP de pool d'identités
<a name="open-id"></a>

[OpenID Connect](http://openid.net/connect/) est une norme ouverte d'authentification que de nombreux fournisseurs de connexion prennent en charge. Avec Amazon Cognito, vous pouvez associer des identités aux fournisseurs OpenID Connect par le biais desquels vous les configurez. [Gestion des identités et des accès AWS](https://aws.amazon.com/iam/)

**Ajout d'un fournisseur OpenID Connect**

Pour obtenir des informations sur la création d'un fournisseur OpenID Connect, consultez [Création de fournisseurs d'identité OpenID Connect (OIDC)](https://docs.aws.amazon.com/IAM/latest/UserGuide/identity-providers-oidc.html) dans le *Guide de l'utilisateur Gestion des identités et des accès AWS *.

**Association d'un fournisseur à Amazon Cognito**

**Pour ajouter un fournisseur d'identité (IdP) OIDC**

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 **OpenID Connect (OIDC)**.

1. Choisissez un **fournisseur d'identité OIDC** parmi l'IAM IdPs de votre. Compte AWS Pour ajouter un nouveau fournisseur SAML, choisissez **Créer un nouveau fournisseur** afin d'accéder à la console IAM.

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

Vous pouvez associer plusieurs fournisseurs OpenID Connect à un seul groupe d'identités.

**Utilisation d'OpenID Connect**

Consultez la documentation de votre fournisseur pour savoir comment vous connecter et recevoir un jeton d'identification.

Une fois que vous avez un jeton, ajoutez-le au mappage des connexions. Utilisez l'URI de votre fournisseur comme clé.

**Validation d'un jeton OpenID Connect**

Lors de l'intégration initiale avec Amazon Cognito, vous pouvez recevoir une exception `InvalidToken`. Il est important de comprendre comment Amazon Cognito valide les jetons OpenID Connect (OIDC).

**Note**  
Comme indiqué ici ([https://tools.ietf.org/html/rfc7523](https://tools.ietf.org/html/rfc7523)), Amazon Cognito fournit une période de grâce de 5 minutes pour gérer tout décalage d'horloge entre les systèmes.

1. Le paramètre `iss` doit correspondre à la clé utilisée dans le mappage des connexions (par exemple, login.provider.com).

1. La signature doit être valide. Elle doit être vérifiable via une clé publique RSA.
**Note**  
Les pools d'identités conservent un cache de la clé de signature IdP OIDC pendant une brève période. Si votre fournisseur modifie sa clé de signature, Amazon Cognito peut renvoyer un `NoKeyFound` message d'erreur jusqu'à ce que le cache soit actualisé. Si vous rencontrez cette erreur, attendez environ dix minutes pour que votre pool d'identités actualise la clé de signature.

1. L'empreinte de la clé publique du certificat correspond à l'empreinte que vous avez définie dans IAM quand vous avez créé le fournisseur OIDC.

1. Si le `azp` paramètre est présent, vérifiez cette valeur par rapport IDs au client répertorié dans votre fournisseur OIDC.

1. Si le `azp` paramètre n'est pas présent, vérifiez-le par rapport au `aud` client répertorié IDs dans votre fournisseur OIDC.

Le site web [jwt.io](http://jwt.io/) est une ressource précieuse que vous pouvez utiliser pour décoder les jetons et vérifier ces valeurs.

## Android
<a name="set-up-open-id-1.android"></a>

```
Map<String, String> logins = new HashMap<String, String>();
logins.put("login.provider.com", token);
credentialsProvider.setLogins(logins);
```

## iOS : Objective-C
<a name="set-up-open-id-1.ios-objc"></a>

```
credentialsProvider.logins = @{ "login.provider.com": token }
```

## JavaScript
<a name="set-up-open-id-1.javascript"></a>

```
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
 IdentityPoolId: 'IDENTITY_POOL_ID',
 Logins: {
    'login.provider.com': token
 }
});
```