

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.

# Obtention des informations d'identification
<a name="getting-credentials"></a>

Vous pouvez utiliser Amazon Cognito pour fournir des informations d'identification temporaires à privilèges limités à votre application, afin que vos utilisateurs puissent accéder aux ressources. AWS Cette section décrit comment obtenir des informations d'identification et comment récupérer une identité Amazon Cognito à partir d'un groupe d'identités.

Amazon Cognito prend en charge les identités authentifiées et non authentifiées. L'identité des utilisateurs non authentifiés n'est pas vérifiée. Ce rôle convient donc pour les utilisateurs invités de votre application ou dans les cas où il n'est pas important que les identités des utilisateurs soient vérifiées. Les utilisateurs authentifiés se connectent à votre application via un fournisseur d'identité tiers, ou un groupe d'utilisateurs, qui vérifie leur identité. Assurez-vous de définir de façon appropriée les autorisations des ressources afin de ne pas y accorder l'accès aux utilisateurs non authentifiés.

Les identités Amazon Cognito ne sont pas des informations d'identification. Ils sont échangés contre des informations d'identification en utilisant le support de fédération d'identité Web dans le AWS Security Token Service (AWS STS). Pour obtenir les AWS informations d'identification des utilisateurs de votre application, utilisez le fournisseur d'informations d'identification du pool d'identités Cognito de votre AWS SDK. Par exemple, dans le AWS SDK pour JavaScript (v3), utilisez la `fromCognitoIdentityPool` fonction du `@aws-sdk/credential-providers` package. L'identité est ensuite échangée contre des informations d'identification à l'aide de AWS STS.

Les fournisseurs d'informations d'identification d'identité Web font partie de la chaîne de fournisseurs d'informations d'identification par défaut des kits  AWS  SDK. Pour définir votre jeton de pool d'identités dans un `config` fichier local pour un AWS SDK ou le AWS CLI, ajoutez une entrée `web_identity_token_file` de profil. Voir [Assumer le rôle de fournisseur d'informations d'identification](https://docs.aws.amazon.com/sdkref/latest/guide/feature-assume-role-credentials.html) dans le guide de référence AWS des SDK et des outils.

Pour en savoir plus sur la façon de remplir les informations d'identification d'identité Web dans votre kit SDK, consultez le Guide du développeur du kit SDK. Pour de meilleurs résultats, démarrez votre projet avec l'intégration du pool d'identités intégrée à AWS Amplify.

**AWS Ressources du SDK pour obtenir et définir des informations d'identification avec des pools d'identités**
+ [Fédération de réserve d'identités](https://docs.amplify.aws/lib/auth/advanced/q/platform/android/#identity-pool-federation) (Android) (langue française non garantie) sur le site Amplify Dev Center
+ [Fédération de réserve d'identités](https://docs.amplify.aws/lib/auth/advanced/q/platform/ios/#identity-pool-federation) (iOS) (langue française non garantie) sur le site Amplify Dev Center
+ [Utilisation d'Amazon Cognito Identity pour authentifier les utilisateurs](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-browser-credentials-cognito.html) dans le manuel du développeur AWS SDK pour JavaScript 
+ [Fournisseur d'informations d'identification Amazon Cognito](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/cognito-creds-provider.html) dans le guide du développeur AWS SDK pour .NET 
+ [Spécifiez les informations d'identification par programmation](https://docs.aws.amazon.com/sdk-for-go/v2/developer-guide/configure-gosdk.html#specify-credentials-programmatically) dans le guide du développeur AWS SDK pour Go 
+ [Fournissez des informations d'identification temporaires sous forme de code](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials-explicit.html) dans le guide du AWS SDK for Java 2.x développeur
+ [assumez RoleWithWebIdentityCredentialProvider](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_provider.html#assume-role-with-web-identity-provider) le fournisseur dans le guide du AWS SDK pour PHP développeur
+ [Endosser un rôle avec le fournisseur d'identité Web](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#assume-role-with-web-identity-provider) dans la documentation sur  AWS SDK pour Python (Boto3) 
+ [Spécification de vos informations d'identification et de votre région par défaut](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/credentials.html) dans le guide du AWS SDK pour Rust développeur

Les sections suivantes fournissent des exemples de code dans certains anciens AWS SDK.

## Android
<a name="getting-credentials-1.android"></a>

Vous pouvez utiliser Amazon Cognito pour fournir des informations d'identification temporaires à privilèges limités à votre application, afin que vos utilisateurs puissent accéder aux ressources. AWS Amazon Cognito prend en charge les identités authentifiées et non authentifiées. Pour fournir des AWS informations d'identification à votre application, procédez comme suit.

Pour utiliser un pool d'identités Amazon Cognito dans une application Android, configurez-le. AWS Amplify Pour plus d'informations, consultez [Authentification](https://docs.amplify.aws/lib/auth/getting-started/q/platform/android/) (langue française non garantie) sur le site *Amplify Dev Center*.

**Récupération d'une identité Amazon Cognito**

Si vous autorisez les utilisateurs non authentifiés, vous pouvez récupérer immédiatement un identifiant unique Amazon Cognito (ID d'identité) pour vos utilisateurs finaux. Si vous authentifiez des utilisateurs, vous pouvez extraire l'ID d'identité après avoir défini les jetons de connexion dans le fournisseur d'informations d'identification :

```
String identityId = credentialsProvider.getIdentityId();
Log.d("LogTag", "my ID is " + identityId);
```

**Note**  
 N'appelez pas `getIdentityId()`, `refresh()` ni `getCredentials()` dans le thread principal de votre application. À partir d'Android 3.0 (niveau d'API 11), votre application échouera automatiquement et lancera un réseau [NetworkOnMainThreadException](https://developer.android.com/reference/android/os/NetworkOnMainThreadException.html)si vous le faites I/O sur le thread principal de l'application. Dans ce cas, vous devez transférer le code à un thread en arrière-plan avec `AsyncTask`. Pour plus d'informations, consultez la [documentation Android](https://developer.android.com/training/basics/network-ops/connecting.html#AsyncTask). Vous pouvez également appeler `getCachedIdentityId()` pour récupérer un ID, mais uniquement si un ID est déjà mis en cache localement. Sinon, la méthode renvoie une valeur nulle. 

## iOS - Objective-C
<a name="getting-credentials-1.ios-objc"></a>

Vous pouvez utiliser Amazon Cognito pour fournir des informations d'identification temporaires à privilèges limités à votre application, afin que vos utilisateurs puissent accéder aux ressources. AWS Les groupes d'identités Amazon Cognito prennent en charge les identités authentifiées et non authentifiées. Pour fournir des AWS informations d'identification à votre application, procédez comme suit. 

Pour utiliser un pool d'identités Amazon Cognito dans une application iOS, configurez-le. AWS Amplify Pour plus d'informations, consultez [Authentification Swift](https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios/) et [Authentication Flutter](https://docs.amplify.aws/lib/auth/getting-started/q/platform/flutter/) (langue française non garantie) sur le site *Amplify Dev Center*.

**Récupération d'une identité Amazon Cognito**

Vous pouvez récupérer immédiatement un identifiant Amazon Cognito unique (ID d'identité) pour l'utilisateur si vous autorisez les utilisateurs non authentifiés ou une fois que vous avez défini les jetons de connexion dans le fournisseur d'informations d'identification si vous authentifiez les utilisateurs :

```
// Retrieve your Amazon Cognito ID
[[credentialsProvider getIdentityId] continueWithBlock:^id(AWSTask *task) {
    if (task.error) {
        NSLog(@"Error: %@", task.error);
    }
    else {
        // the task result will contain the identity id
        NSString *cognitoId = task.result;
    }
    return nil;
}];
```

**Note**  
 `getIdentityId` est un appel asynchrone. Si un ID d'identité est déjà configuré sur votre fournisseur, vous pouvez appeler `credentialsProvider.identityId` pour récupérer cette identité, qui est mise en cache localement. Toutefois, si aucun identifiant d'identité n'est défini pour votre fournisseur, l'appel `credentialsProvider.identityId` revient`nil`. Pour plus d'informations, consultez la [Référence du kit SDK Amplify iOS](https://github.com/aws-amplify/aws-sdk-ios). 

## iOS : Swift
<a name="getting-credentials-1.ios-swift"></a>

Vous pouvez utiliser Amazon Cognito pour fournir des informations d'identification temporaires à privilèges limités à votre application afin que vos utilisateurs puissent accéder aux ressources. AWS Amazon Cognito prend en charge les identités authentifiées et non authentifiées. Pour fournir des AWS informations d'identification à votre application, procédez comme suit. 

Pour utiliser un pool d'identités Amazon Cognito dans une application iOS, configurez-le. AWS Amplify Pour plus d'informations, consultez [Authentification Swift](https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios/) (langue française non garantie) sur le site *Amplify Dev Center*.

**Récupération d'une identité Amazon Cognito**

Vous pouvez récupérer immédiatement un identifiant Amazon Cognito unique (ID d'identité) pour l'utilisateur si vous autorisez les utilisateurs non authentifiés ou une fois que vous avez défini les jetons de connexion dans le fournisseur d'informations d'identification si vous authentifiez les utilisateurs :

```
// Retrieve your Amazon Cognito ID
credentialsProvider.getIdentityId().continueWith(block: { (task) -> AnyObject? in
    if (task.error != nil) {
        print("Error: " + task.error!.localizedDescription)
    }
    else {
        // the task result will contain the identity id
        let cognitoId = task.result!
        print("Cognito id: \(cognitoId)")
    }
    return task;
})
```

**Note**  
 `getIdentityId` est un appel asynchrone. Si un ID d'identité est déjà configuré sur votre fournisseur, vous pouvez appeler `credentialsProvider.identityId` pour récupérer cette identité, qui est mise en cache localement. Toutefois, si aucun identifiant d'identité n'est défini pour votre fournisseur, l'appel `credentialsProvider.identityId` revient`nil`. Pour plus d'informations, consultez la [Référence du kit SDK Amplify iOS](https://github.com/aws-amplify/aws-sdk-ios). 

## JavaScript
<a name="getting-credentials-1.javascript"></a>

Si ce n'est pas déjà fait, créez un groupe d'identités dans la [console Amazon Cognito](https://console.aws.amazon.com/cognito) avant d'utiliser `fromCognitoIdentityPool`.

Après avoir configuré un pool d'identités avec vos fournisseurs d'identité, vous pouvez utiliser la `fromCognitoIdentityPool` fonction du `@aws-sdk/credential-providers` package pour authentifier les utilisateurs. Plutôt que de définir une valeur globale`AWS.config.credentials`, associez le fournisseur d'informations d'identification directement à chaque client de service via sa `credentials` propriété. Le SDK v3 résout le problème du fournisseur paresseusement la première fois que le client fait une demande. Il n'y a donc aucun appel distinct pour obtenir les informations d'identification. L'exemple suivant associe le fournisseur à un `S3Client` : 

```
import { S3Client } from "@aws-sdk/client-s3";
import { fromCognitoIdentityPool } from "@aws-sdk/credential-providers";

// Set the region where your identity pool exists (for example, us-east-1 or eu-west-1)
const region = "REGION";

// Attach the credentials provider to your service client
const client = new S3Client({
  region,
  credentials: fromCognitoIdentityPool({
    identityPoolId: "IDENTITY_POOL_ID",
    logins: { // optional tokens, used for authenticated login
      "graph.facebook.com": "FBTOKEN",
      "www.amazon.com": "AMAZONTOKEN",
      "accounts.google.com": "GOOGLETOKEN",
      "appleid.apple.com": "APPLETOKEN"
    },
    clientConfig: { region },
  }),
});

// Credentials are resolved lazily when the client first makes a request.
// To inspect them directly, call the provider and await the result
// (from inside an async function):
const credentials = await client.config.credentials();
const { accessKeyId, secretAccessKey, sessionToken } = credentials;
```

La propriété facultative `logins` est un mappage de noms de fournisseur d'identité avec les jetons d'identité de ces fournisseurs. La façon dont vous obtenez le jeton de la part de votre fournisseur d'identité dépend du fournisseur que vous utilisez. Par exemple, si Facebook est l'un de vos fournisseurs d'identité, vous pouvez utiliser la fonction `FB.login` du [kit SDK Facebook](https://developers.facebook.com/docs/facebook-login/web) pour obtenir un jeton de fournisseur d'identité : 

```
FB.login(function (response) {
    if (response.authResponse) { // logged in
        const region = "us-east-1";
        const client = new S3Client({
          region,
          credentials: fromCognitoIdentityPool({
            identityPoolId: "us-east-1:1699ebc0-7900-4099-b910-2df94f52a030",
            logins: {
              "graph.facebook.com": response.authResponse.accessToken
            },
            clientConfig: { region },
          }),
        });

        console.log('You are now logged in.');
    } else {
        console.log('There was a problem logging you in.');
    }
});
```

**Récupération d'une identité Amazon Cognito**

Vous pouvez récupérer un identifiant Amazon Cognito (identifiant d'identité) unique pour votre utilisateur final. Si vous autorisez les utilisateurs non authentifiés, vous pouvez le récupérer immédiatement. Si vous authentifiez des utilisateurs, récupérez-les après avoir défini les jetons de connexion. Le `fromCognitoIdentityPool` fournisseur expose les `identityId` informations d'identification qu'il résout, afin que vous puissiez les lire à partir des informations d'identification résolues d'un client qui utilise le fournisseur :

```
// Inside an async function:
const { identityId } = await client.config.credentials();
```

## Unity
<a name="getting-credentials-1.unity"></a>

 Vous pouvez utiliser Amazon Cognito pour fournir des informations d'identification temporaires à privilèges limités à votre application, afin que vos utilisateurs puissent accéder aux ressources. AWS Amazon Cognito prend en charge les identités authentifiées et non authentifiées. Pour fournir des AWS informations d'identification à votre application, procédez comme suit. 

Le kit [AWS  SDK for Unity](https://docs.aws.amazon.com/mobile/sdkforunity/developerguide/what-is-unity-plugin.html) fait désormais partie du kit [SDK pour .NET](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/welcome.html). Pour commencer à utiliser Amazon Cognito dans le SDK pour .NET, consultez la section relative au fournisseur d'informations d'[identification Amazon Cognito](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/cognito-creds-provider.html) dans AWS SDK pour .NET le guide du développeur. Ou consultez le [centre de développement Amplify](https://docs.amplify.aws/) pour découvrir les options permettant de créer une application avec. AWS Amplify

**Récupération d'une identité Amazon Cognito**

 Vous pouvez récupérer immédiatement un identifiant Amazon Cognito unique (ID d'identité) pour l'utilisateur si vous autorisez les utilisateurs non authentifiés ou une fois que vous avez défini les jetons de connexion dans le fournisseur d'informations d'identification si vous authentifiez les utilisateurs : 

```
string identityId = await credentials.GetIdentityIdAsync();
```