Utilizzo della federazione delle identità Web - Amazon DynamoDB

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

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

Le risorse seguenti possono fornire ulteriori informazioni sulla federazione delle identità Web:

  • Il post Federazione delle identità Web tramite AWS SDK for .NETsul blog di AWS Developer illustra come utilizzare la federazione delle identità Web con Facebook. Include frammenti di codice in C# che mostrano come assumere un IAM ruolo nell'identità web e come utilizzare credenziali di sicurezza temporanee per accedere a una risorsa. AWS

  • AWS Mobile SDK for iOS e AWS Mobile SDK for Android 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 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

Per mostrare come utilizzare la federazione delle identità web con DynamoDB, rivedi GameScoresla tabella introdotta in. Utilizzo di condizioni IAM politiche per un controllo granulare degli accessi 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: stringa
Nome dell'attributo: GameTitle

Tipo: stringa

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 dell'app e garantire che ogni utente possa accedere solo ai propri dati nella GameScorestabella. 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 deve creare un IAM ruolo. (In questo esempio, questo ruolo è denominato GameRole.) Al ruolo deve essere allegato un documento di IAM policy, che specifichi le condizioni in base alle quali l'app può accedere alla GameScorestabella.

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 GameRolewith Amazon e richiedendo l'iscrizione. AWS STS restituisce AWS le credenziali temporanee all'app e le consente di accedere alla GameScorestabella, in base al documento relativo alla GameRolepolicy.

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

Il flusso di lavoro di un'app di gioco. L'app utilizza Amazon ID e AWS STS per ottenere credenziali temporanee per accedere a una tabella DynamoDB.

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.

  2. 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 IAM ruolo (GameRole) e accedere alle AWS risorse in conformità con la politica di sicurezza del ruolo.

  3. 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 sicurezza GameRoleche è stata mostrata inUtilizzo di condizioni IAM politiche per un controllo granulare degli accessi:

{ "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 GameScoressono 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.