

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.

# Utilisation de la fédération d’identité web
<a name="WIF"></a>

Si vous écrivez une application ciblée pour un grand nombre d’utilisateurs, vous pouvez, le cas échéant, utiliser la *fédération d’identité web* pour l’authentification et l’autorisation. La fédération d’identité web élimine le besoin de créer des utilisateurs individuels. Au lieu de cela, les utilisateurs peuvent se connecter à un fournisseur d'identité, puis obtenir des informations d'identification de sécurité temporaires auprès de AWS Security Token Service (AWS STS). L'application peut ensuite utiliser ces informations d'identification pour accéder aux AWS services.

La fédération d’identité Web prend en charge les fournisseurs d’identité suivants :
+ Login with Amazon
+ Facebook
+ Google

## Ressources supplémentaires pour la fédération d’identité web
<a name="WIF.AdditionalResources"></a>

Les ressources suivantes peuvent vous aider à en savoir plus sur la fédération d’identité web :
+ La publication [Web Identity Federation using the AWS SDK pour .NET](https://aws.amazon.com/blogs/developer/web-identity-federation-using-the-aws-sdk-for-net) sur le blog des développeurs AWS explique comment utiliser une fédération d’identité web avec Facebook. Il inclut des extraits de code en C\$1 qui montrent comment assumer un rôle IAM avec une identité Web et comment utiliser des informations d'identification de sécurité temporaires pour accéder à une ressource. AWS 
+ L’[Applications mobiles AWS SDK for iOS](https://aws.amazon.com/sdkforios/) et l’[AWS Mobile SDK pour Android](https://aws.amazon.com/sdkforandroid/) contiennent des exemples d’applications. Ces dernières incluent le code qui montre comment appeler les fournisseurs d’identité et comment utiliser les informations qu’ils fournissent pour obtenir et utiliser les informations d’identification de sécurité temporaires.
+ L'article [Fédération d'identité Web avec applications mobiles](https://aws.amazon.com/articles/4617974389850313) traite de la fédération d'identité Web et montre un exemple d'utilisation de la fédération d'identité Web pour accéder à une AWS ressource.

## Exemple de politique pour la fédération d’identité web
<a name="WIF.Example"></a>

Pour montrer comment utiliser la fédération d'identité Web avec DynamoDB, consultez *GameScores*le tableau introduit dans. [Utilisation de conditions de politique IAM pour un contrôle d’accès précis](specifying-conditions.md) Voici la clé primaire pour *GameScores*.


****  

| Nom de la table | Type de clé primaire | Type et nom de la clé de partition | Type et nom de la clé de tri | 
| --- | --- | --- | --- | 
| GameScores (UserId, GameTitle, ...) | Composite | Nom de l'attribut : UserId Type : Chaîne | Nom de l'attribut : GameTitle Type : Chaîne | 

Supposons maintenant qu’une application de jeu pour appareils mobiles utilise cette table et qu’elle doive prendre en charge des milliers, voire des millions, d’utilisateurs. À cette échelle, il devient très difficile de gérer les utilisateurs individuels des applications et de garantir que chaque utilisateur ne peut accéder qu'à ses propres données dans le *GameScores*tableau. Heureusement, comme la plupart des utilisateurs possèdent des comptes avec un fournisseur d’identité tiers, tel que Facebook, Google ou Login with Amazon. Il est donc logique de tirer parti de l’un de ces fournisseurs pour les tâches d’authentification.

Pour procéder ainsi avec la fédération d’identité web, le développeur d’application doit inscrire l’application auprès d’un fournisseur d’identité (Login with Amazon, par exemple) et obtenir un ID d’application unique. Ensuite, le développeur doit créer un rôle IAM. (Dans cet exemple, ce rôle est nommé *GameRole*.) Un document de politique IAM doit être joint au rôle, spécifiant les conditions dans lesquelles l'application peut accéder à la *GameScores*table.

Lorsqu’un utilisateur veut jouer à un jeu, il se connecte à son compte Login with Amazon depuis l’application de jeu. L'application appelle ensuite AWS Security Token Service (AWS STS), fournit l'identifiant de l'application Login with Amazon et demande d'adhésion *GameRole*. AWS STS renvoie des AWS informations d'identification temporaires à l'application et lui permet d'accéder au *GameScores*tableau, sous réserve du document *GameRole*de politique.

Le schéma suivant illustre comment ces éléments s’ajustent les uns aux autres.

![\[Le flux de travail d’une application de jeu. L'application utilise Amazon ID AWS STS pour obtenir des informations d'identification temporaires pour accéder à une table DynamoDB.\]](http://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/developerguide/images/wif-overview.png)


**Présentation de la fédération d’identité web**

1. L’application appelle un fournisseur d’identité tiers pour authentifier l’utilisateur et l’application. Le fournisseur d’identité retourne un jeton d’identité web à l’application.

1. L'application appelle AWS STS et transmet le jeton d'identité Web en entrée. AWS STS autorise l'application et lui donne des identifiants d' AWS accès temporaires. L'application est autorisée à assumer un rôle IAM (*GameRole*) et à accéder aux AWS ressources conformément à la politique de sécurité du rôle.

1. L'application appelle DynamoDB pour accéder à la table. *GameScores* Parce qu'elle a assumé le *GameRole*, l'application est soumise à la politique de sécurité associée à ce rôle. Le document de politique empêche l’application d’accéder aux données qui n’appartiennent pas à l’utilisateur.

Encore une fois, voici la politique de sécurité *GameRole*qui a été présentée dans [Utilisation de conditions de politique IAM pour un contrôle d’accès précis](specifying-conditions.md) :

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"AllowAccessToOnlyItemsMatchingUserID",
         "Effect":"Allow",
         "Action":[
            "dynamodb:GetItem",
            "dynamodb:BatchGetItem",
            "dynamodb:Query",
            "dynamodb:PutItem",
            "dynamodb:UpdateItem",
            "dynamodb:DeleteItem",
            "dynamodb:BatchWriteItem"
         ],
         "Resource":[
            "arn:aws:dynamodb:us-west-2:123456789012:table/GameScores"
         ],
         "Condition":{
            "ForAllValues:StringEquals":{
               "dynamodb:LeadingKeys":[
                  "${www.amazon.com:user_id}"
               ],
               "dynamodb:Attributes":[
                  "UserId",
                  "GameTitle",
                  "Wins",
                  "Losses",
                  "TopScore",
                  "TopScoreDateTime"
               ]
            },
            "StringEqualsIfExists":{
               "dynamodb:Select":"SPECIFIC_ATTRIBUTES"
            }
         }
      }
   ]
}
```

------

La `Condition` clause détermine quels éléments *GameScores*sont visibles par l'application. A cette fin, elle compare l’ID de Login with Amazon aux valeurs de clé de partition `UserId` dans `GameScores`. Seuls les éléments appartenant à l’utilisateur actuel peuvent être traités à l’aide de l’une des actions DynamoDB répertoriées dans cette politique. Il n’est pas possible d’accéder aux autres éléments de la table. En outre, seuls les attributs spécifiques répertoriés dans la politique sont accessibles.