

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzo della federazione delle identità Web
<a name="WIF"></a>

Quando scrivi un'applicazione destinata a un gran numero di utenti, puoi scegliere di utilizzare la *federazione delle identità Web* per l'autenticazione e l'autorizzazione. La federazione delle identità Web rimuove la necessità di creare singoli utenti . Gli utenti possono invece accedere a un provider di identità e quindi ottenere credenziali di sicurezza temporanee da AWS Security Token Service ().AWS STS L'app può quindi utilizzare queste credenziali per accedere ai servizi AWS .

La federazione delle identità Web supporta i seguenti provider di identità:
+ Login with Amazon
+ Facebook
+ Google

## Risorse aggiuntive per la federazione delle identità Web
<a name="WIF.AdditionalResources"></a>

Le risorse seguenti possono fornire ulteriori informazioni sulla federazione delle identità Web:
+ Il post [Federazione delle identità Web tramite AWS SDK per .NET](https://aws.amazon.com/blogs/developer/web-identity-federation-using-the-aws-sdk-for-net)sul blog di AWS Developer illustra come utilizzare la federazione delle identità Web con Facebook. Include frammenti di codice in C\$1 che mostrano come assumere un ruolo IAM con l'identità web e come utilizzare credenziali di sicurezza temporanee per accedere a una risorsa. AWS 
+ [AWS Mobile SDK for iOS](https://aws.amazon.com/sdkforios/) e [AWS Mobile SDK per Android](https://aws.amazon.com/sdkforandroid/) contengono app di esempio. Includono codice che mostra come invocare i provider di identità e quindi come utilizzare le informazioni provenienti da questi provider per ottenere e usare credenziali di sicurezza temporanee.
+ L'articolo [Web Identity Federation with Mobile Applications](https://aws.amazon.com/articles/4617974389850313) illustra la federazione delle identità Web e mostra un esempio di come utilizzare la federazione delle identità Web per accedere a una risorsa. AWS 

## Policy di esempio per la federazione delle identità Web
<a name="WIF.Example"></a>

Per mostrare come utilizzare la federazione delle identità web con DynamoDB, rivedi *GameScores*la tabella introdotta in. [Utilizzo di condizioni di policy IAM per il controllo granulare degli accessi](specifying-conditions.md) Ecco la chiave principale per. *GameScores*


****  

| Nome tabella | Tipo di chiave primaria | Nome e tipo di chiave di partizione | Nome e tipo di chiave di ordinamento | 
| --- | --- | --- | --- | 
| GameScores (UserId, GameTitle, ...) | Composita | Nome dell'attributo: UserId Tipo: String | Nome dell'attributo: GameTitle Tipo: String | 

Immagina ora che un'app di gioco per dispositivi mobili utilizzi questa tabella e che debba supportare migliaia, o persino milioni, di utenti. Su questa scala, diventa molto difficile gestire i singoli utenti delle app e garantire che ogni utente possa accedere solo ai propri dati nella *GameScores*tabella. Per fortuna, molti utenti dispongono già di account con un provider di identità di terze parti, come Facebook, Google o Login with Amazon. Pertanto, è opportuno utilizzare uno di questi provider per attività di autenticazione.

Per poterlo fare utilizzando la federazione delle identità Web, lo sviluppatore deve registrare l'app con un provider di identità (come Login with Amazon) e ottenere un ID app univoco. Successivamente, lo sviluppatore dovrà creare un ruolo IAM. (In questo esempio, questo ruolo è denominato *GameRole*.) Al ruolo deve essere allegato un documento di policy IAM, che specifichi le condizioni in base alle quali l'app può accedere alla *GameScores*tabella.

Quando un utente desidera giocare, accede al proprio account di Login with Amazon dall'interno dell'app di gioco. L'app chiama quindi AWS Security Token Service (AWS STS), fornendo l'ID dell'app Login *GameRole*with Amazon e richiedendo l'iscrizione. AWS STS restituisce AWS le credenziali temporanee all'app e le consente di accedere alla *GameScores*tabella, in base al documento relativo alla *GameRole*policy.

Il seguente diagramma mostra come questi elementi di integrano fra loro.

![\[Il flusso di lavoro di un’app di videogiochi. L'app utilizza Amazon ID e AWS STS per ottenere credenziali temporanee per accedere a una tabella DynamoDB.\]](http://docs.aws.amazon.com/it_it/amazondynamodb/latest/developerguide/images/wif-overview.png)


**Panoramica sulla federazione delle identità Web**

1. L'app chiama un provider di identità di terza parte per autenticare l'utente e l'app. Il provider di identità restituisce all'app un token di identità Web.

1. L'app chiama AWS STS e trasmette il token di identità web come input. AWS STS autorizza l'app e le fornisce credenziali di AWS accesso temporanee. L'app può assumere un ruolo IAM (*GameRole*) e accedere alle AWS risorse in conformità con la politica di sicurezza del ruolo.

1. L'app chiama DynamoDB per accedere alla tabella. *GameScores* Poiché ha assunto il *GameRole*, l'app è soggetta alla politica di sicurezza associata a quel ruolo. Il documento della policy impedisce all'app di accedere a dati che non appartengono all'utente.

Ancora una volta, ecco la politica di *GameRole*sicurezza mostrata in[Utilizzo di condizioni di policy IAM per il controllo granulare degli accessi](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` clausola determina quali elementi *GameScores*sono visibili all'app. Per farlo, confronta l'ID Login with Amazon con i valori della chiave di partizione `UserId` in `GameScores`. Solo gli elementi appartenenti all'utente corrente possono essere elaborati utilizzando una delle operazioni DynamoDB elencate in questa policy. Altri item nella tabella non sono accessibili. Inoltre, è possibile accedere solo agli attributi specifici elencati nella policy.