

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Verwenden des Web-Identitätsverbunds
<a name="WIF"></a>

Wenn Sie eine Anwendung schreiben, die für eine große Anzahl von Benutzern bestimmt ist, können Sie optional den *Web-Identitätsverbund* für die Authentifizierung und Autorisierung verwenden. Mit dem Web-Identitätsverbund ist es nicht mehr erforderlich, einzelne -Benutzer zu erstellen. Stattdessen können sich Benutzer bei einem Identitätsanbieter anmelden und dann temporäre Sicherheitsanmeldedaten von AWS -Security-Token-Service (AWS STS) abrufen. Die App kann diese Anmeldeinformationen dann verwenden, um auf AWS Dienste zuzugreifen.

Ein Web-Identitätsverbund unterstützt die folgenden Identitätsanbieter:
+ Login with Amazon
+ Facebook
+ Google

## Weitere Ressourcen für den Web-Identitätsverbund
<a name="WIF.AdditionalResources"></a>

Die folgenden Ressourcen können Ihnen dabei helfen, mehr über den Web-Identitätsverbund zu erfahren:
+ Der Post [Web Identity Federation verwendet AWS SDK für .NET](https://aws.amazon.com/blogs/developer/web-identity-federation-using-the-aws-sdk-for-net) im AWS Entwicklerblog um zu erläutern, wie der Web-Identitätsverbund mit Facebook verwendet wird. Sie enthält Codefragmente in C\$1, die zeigen, wie eine IAM-Rolle mit Webidentität übernommen wird und wie temporäre Sicherheitsanmeldedaten für den Zugriff auf eine Ressource verwendet werden. AWS 
+ Die [AWS Mobile SDK for iOS](https://aws.amazon.com/sdkforios/) und die [AWS Mobile SDK für Android](https://aws.amazon.com/sdkforandroid/) enthalten Beispiel-Apps. Sie enthalten Code, der zeigt, wie die Identitätsanbieter aufgerufen werden und wie dann die Informationen von diesen Anbietern verwendet werden, um temporäre Sicherheitsanmeldeinformationen zu beziehen und zu nutzen.
+ Der Artikel [Web Identity Federation with Mobile Applications](https://aws.amazon.com/articles/4617974389850313) behandelt den Web-Identitätsverbund und zeigt ein Beispiel dafür, wie der Web-Identitätsverbund für den Zugriff auf eine Ressource verwendet werden kann. AWS 

## Beispielrichtlinie für einen Web-Identitätsverbund
<a name="WIF.Example"></a>

Um zu zeigen, wie Sie den Web-Identitätsverbund mit DynamoDB verwenden können, schauen Sie sich noch einmal die *GameScores*Tabelle an, die in eingeführt wurde. [Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle](specifying-conditions.md) Hier ist der Primärschlüssel für. *GameScores*


****  

| Tabellenname | Primärschlüsseltyp | Partitions-Schlüsselname und -Typ | Sortierschlüsselname und -Typ | 
| --- | --- | --- | --- | 
| GameScores (UserId, GameTitle, ...) | Zusammengesetzt | Name des Attributs: UserId Typ: Zeichenfolge | Name des Attributs: GameTitle Typ: Zeichenfolge | 

Angenommen, dass eine mobile Spielanwendung diese Tabelle verwendet und diese Anwendung Tausenden oder sogar Millionen von Benutzern unterstützen muss. Bei dieser Größenordnung wird es sehr schwierig, einzelne App-Benutzer zu verwalten und sicherzustellen, dass jeder Benutzer nur auf seine eigenen Daten in der *GameScores*Tabelle zugreifen kann. Glücklicherweise verfügen viele Benutzer bereits über Konten bei einem externen Identitätsanbieter wie Facebook, Google oder Login with Amazon. So ist es durchaus sinnvoll, einen dieser Anbieter für die Authentifizierungsaufgaben zu nutzen.

Um dies mit dem Web-Identitätsverbund durchzuführen, muss der Anwendungsentwickler die Anwendung bei einem Identitätsanbieter (wie Login with Amazon) registrieren und eine eindeutige Anwendungs-ID erhalten. Als nächstes muss der Entwickler eine IAM-Rolle erstellen. (In diesem Beispiel ist diese Rolle benannt *GameRole*.) An die Rolle muss ein IAM-Richtliniendokument angehängt sein, in dem die Bedingungen angegeben sind, unter denen die App auf die *GameScores*Tabelle zugreifen kann.

Wenn ein Benutzer ein Spiel spielen möchte, meldet er sich mit seinem „Login with Amazon“-Konto bei der Spielanwendung an. Die App ruft dann AWS -Security-Token-Service (AWS STS) auf, gibt das Login mit der Amazon-App-ID an und fordert die Mitgliedschaft bei an *GameRole*. AWS STS gibt temporäre AWS Anmeldeinformationen an die App zurück und ermöglicht ihr, vorbehaltlich des *GameRole*Richtliniendokuments, den Zugriff auf die *GameScores*Tabelle.

Das folgende Diagramm zeigt, wie diese einzelnen Komponenten zusammenpassen.

![\[Workflow einer Gaming-App. Die App verwendet Amazon ID und AWS STS um temporäre Anmeldeinformationen für den Zugriff auf eine DynamoDB-Tabelle zu erhalten.\]](http://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/images/wif-overview.png)


**Übersicht eines Web-Identitätsverbunds**

1. Die Anwendung ruft einen externen Identitätsanbieter auf, um den Benutzer und die Anwendung zu authentifizieren. Der Identitätsanbieter gibt ein Web-Identitäts-Token an die Anwendung zurück.

1. Die App ruft das Web-Identity-Token auf AWS STS und übergibt es als Eingabe. AWS STS autorisiert die App und gibt ihr temporäre AWS Zugangsdaten. Die App darf gemäß der Sicherheitsrichtlinie der Rolle eine IAM-Rolle (*GameRole*) annehmen und auf AWS Ressourcen zugreifen.

1. Die App ruft DynamoDB auf, um auf die *GameScores*Tabelle zuzugreifen. Da sie das übernommen hat *GameRole*, unterliegt die App den Sicherheitsrichtlinien, die mit dieser Rolle verknüpft sind. Das Richtliniendokument verhindert, dass die Anwendung auf Daten zugreift, die dem Benutzer nicht gehören.

Hier ist noch einmal die Sicherheitsrichtlinie dafür *GameRole*, die gezeigt wurde in[Verwenden von IAM-Richtlinienbedingungen für die differenzierte Zugriffskontrolle](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"
            }
         }
      }
   ]
}
```

------

Die `Condition` Klausel bestimmt, welche Elemente in der App sichtbar *GameScores*sind. Dies geschieht durch das Vergleichen von Login with Amazon mit den `UserId`-Partitions-Schlüsselwerten in `GameScores`. Nur die Elemente des aktuellen Benutzers können verarbeitet werden, indem Sie eine der DynamoDB-Aktionen verwenden, die in dieser Richtlinie aufgeführt sind. Auf andere Elemente in der Tabelle kann nicht zugegriffen werden. Außerdem kann nur auf die spezifischen Attribute, die in der Richtlinie aufgeführt sind, zugegriffen werden.

# Vorbereiten der Nutzung des Web-Identitätsverbunds
<a name="WIF.PreparingForUse"></a>

Wenn Sie ein Anwendungsentwickler sind und den Web-Identitätsverbund für Ihre Anwendung verwenden möchten, führen Sie die folgenden Schritte aus:

1. **Anmelden als Entwickler bei einem externen Identitätsanbieter.** Die folgenden externen Links stellen Informationen zur Anmeldung mit unterstützten Identitätsanbietern bereit:
   + [Login with Amazon-Entwicklerzentrum](http://login.amazon.com/)
   + [Registrierung](https://business.facebook.com/business/loginpage) auf der Facebook-Seite
   + [Verwenden von OAuth 2.0 für den Zugriff APIs auf Google](https://developers.google.com/accounts/docs/OAuth2) auf der Google-Website

1. **Registrieren der Anwendung bei dem Identitätsanbieter.** Wenn Sie dies tun, stellt der Anbieter Ihnen eine ID zur Verfügung, die in Ihrer Anwendung eindeutig ist. Wenn Sie möchten, dass Ihre Anwendung mit mehreren Identitätsanbietern arbeitet, müssen Sie eine Anwendungs-ID von jedem einzelnen Anbieter abrufen.

1. **Erstellen Sie eine oder mehrere IAM-Rollen. **Sie benötigen eine Rolle für jeden Identitätsanbieter für jede Anwendung. Sie können beispielsweise eine Rolle erstellen, die von einer Anwendung übernommen werden kann, in der der Benutzer sich mit Login with Amazon angemeldet hat, eine zweite Rolle für die gleiche Anwendung, in der der Benutzer sich mit Facebook angemeldet hat und eine dritte Rolle für die Anwendung, in der sich der Benutzer mit Google angemeldet hat.

   Im Rahmen des Rollenerstellungsprozesses, müssen Sie eine IAM-Richtlinie der Rolle zuordnen. Ihr Richtliniendokument sollte die DynamoDB-Ressourcen, die für Ihre Anwendung erforderlich sind, und die Berechtigungen für den Zugriff auf diese Ressourcen definieren.

Weitere Informationen finden Sie unter [Informationen zum Web-Identitätsverbund](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) im *IAM-Benutzerhandbuch*. 

**Anmerkung**  
Als Alternative können Sie Amazon Cognito verwenden. AWS -Security-Token-Service Amazon Cognito ist der bevorzugte Service für die Verwaltung von temporären Anmeldeinformationen für mobile Anwendungen. Weitere Informationen finden Sie unter [Abrufen von Anmeldeinformationen](https://docs.aws.amazon.com/cognito/latest/developerguide/getting-credentials.html) im *Entwicklerhandbuch zu Amazon Cognito*. 

## Generieren einer IAM-Richtlinie mit der DynamoDB-Konsole
<a name="WIF.PreparingForUse.DDBConsole"></a>

Die DynamoDB-Konsole kann Ihnen helfen, eine IAM-Richtlinie für die Verwendung mit dem Web-Identitätsverbund zu erstellen. Dazu wählen Sie eine DynamoDB-Tabelle aus und geben den Identitätsanbieter, Aktionen und Attribute an, die in der Richtlinie enthalten sein sollen. Die DynamoDB-Konsole erstellt dann eine Richtlinie, die Sie einer IAM-Rolle zuordnen können.

1. Melden Sie sich bei der an AWS-Managementkonsole und öffnen Sie die DynamoDB-Konsole unter. [https://console.aws.amazon.com/dynamodb/](https://console.aws.amazon.com/dynamodb/)

1.  Wählen Sie im Navigationsbereich **Tables** (Tabellen) aus. 

1.  Wählen Sie in der Liste der Tabellen die Tabelle aus, für die Sie die IAM-Richtlinie erstellen möchten. 

1.  Wählen Sie die Schaltfläche **Aktionen** und **Zugriffskontrollrichtlinie erstellen** aus. 

1.  Wählen Sie den Identitätsanbieter, Aktionen und Attribute für die Richtlinie aus. 

    Wenn Sie die gewünschten Einstellungen vorgenommen haben, wählen Sie **Richtlinie generieren** aus. Die erstellte Richtlinie wird angezeigt. 

1.  Wählen Sie auf **Dokumentation anzeigen** aus und befolgen Sie die erforderlichen Schritte, um die generierte Richtlinie einer IAM-Rolle zuzuordnen. 

# Schreiben Ihrer Anwendung, um den Web-Identitätsverbund zu nutzen
<a name="WIF.RunningYourApp"></a>

Um den Web-Identitätsverbund zu verwenden, muss die Anwendung die IAM-Rolle übernehmen, die Sie erstellt haben. Von diesem Punkt an berücksichtigt die Anwendung die Zugriffsrichtlinie, die mit der Rolle verknüpft ist.

Wenn Ihre Anwendung den Web-Identitätsverbund zur Laufzeit nutzt, muss sie die folgenden Schritte befolgen:

1. **Authentifizieren mit einem externen Identitätsanbieter.** Ihre Anwendung muss den Identitätsanbieter mithilfe der Schnittstelle, die er bereitstellt, aufrufen. Die genaue Art und Weise, wie Sie den Benutzer authentifizieren, hängt von dem Anbieter und der Plattform ab, auf der Sie die Anwendung ausführen. Wenn der Benutzer nicht bereits angemeldet ist, kümmert sich der Identitätsanbieter in der Regel um die Anzeige einer Anmeldeseite dieses Anbieters.

   Nachdem der Identitätsanbieter den Benutzer authentifiziert hat, gibt der Anbieter ein Web-Identitäts-Token an Ihre Anwendung zurück. Das Format dieses Tokens hängt von dem Anbieter ab, ist in der Regel aber eine sehr lange Zeichenfolge.

1. **Besorgen Sie sich temporäre AWS Sicherheitsanmeldeinformationen.** Zu diesem Zweck sendet die App eine `AssumeRoleWithWebIdentity`-Anforderung an AWS -Security-Token-Service (AWS STS). Diese Anforderung enthält Folgendes:
   + Das Web-Identitäts-Token aus dem vorherigen Schritt
   + Die Anwendungs-ID des Identitätsanbieters
   + Der Amazon-Ressourcenname (ARN) der IAM;-Rolle, die Sie für diesen Identitätsanbieter für diese Anwendung erstellt haben

   AWS STS gibt eine Reihe von AWS Sicherheitsanmeldeinformationen zurück, die nach einer bestimmten Zeit ablaufen (standardmäßig 3.600 Sekunden).

   Das Folgende ist eine Beispielanforderung und -antwort von einer `AssumeRoleWithWebIdentity`-Aktion in AWS STS. Das Web-Identitäts-Token wurde von dem „Login with Amazon“-Identitätsanbieter erhalten.

   ```
   GET / HTTP/1.1
   Host: sts.amazonaws.com
   Content-Type: application/json; charset=utf-8
   URL: https://sts.amazonaws.com/?ProviderId=www.amazon.com
   &DurationSeconds=900&Action=AssumeRoleWithWebIdentity
   &Version=2011-06-15&RoleSessionName=web-identity-federation
   &RoleArn=arn:aws:iam::123456789012:role/GameRole
   &WebIdentityToken=Atza|IQEBLjAsAhQluyKqyBiYZ8-kclvGTYM81e...(remaining characters omitted)
   ```

   

   ```
   <AssumeRoleWithWebIdentityResponse
     xmlns="https://sts.amazonaws.com/doc/2011-06-15/">
     <AssumeRoleWithWebIdentityResult>
       <SubjectFromWebIdentityToken>amzn1.account.AGJZDKHJKAUUSW6C44CHPEXAMPLE</SubjectFromWebIdentityToken>
       <Credentials>
         <SessionToken>AQoDYXdzEMf//////////wEa8AP6nNDwcSLnf+cHupC...(remaining characters omitted)</SessionToken>
         <SecretAccessKey>8Jhi60+EWUUbbUShTEsjTxqQtM8UKvsM6XAjdA==</SecretAccessKey>
         <Expiration>2013-10-01T22:14:35Z</Expiration>
         <AccessKeyId>06198791C436IEXAMPLE</AccessKeyId>
       </Credentials>
       <AssumedRoleUser>
         <Arn>arn:aws:sts::123456789012:assumed-role/GameRole/web-identity-federation</Arn>
         <AssumedRoleId>AROAJU4SA2VW5SZRF2YMG:web-identity-federation</AssumedRoleId>
       </AssumedRoleUser>
     </AssumeRoleWithWebIdentityResult>
     <ResponseMetadata>
       <RequestId>c265ac8e-2ae4-11e3-8775-6969323a932d</RequestId>
     </ResponseMetadata>
   </AssumeRoleWithWebIdentityResponse>
   ```

1. **Auf AWS Ressourcen zugreifen.** Die Antwort von AWS STS enthält Informationen, die die Anwendung benötigt, um auf DynamoDB-Ressourcen zuzugreifen:
   + Die Felder `AccessKeyID`-, `SecretAccessKey`- und `SessionToken` beinhalten Sicherheitsanmeldeinformationen, die nur für diesen Benutzer und diese Anwendung gültig sind. 
   + Das `Expiration`-Feld gibt die Frist für diese Anmeldeinformationen an, nach der sie nicht mehr gültig sind.
   + Das `AssumedRoleId`-Feld enthält den Namen einer sitzungsspezifischen IAM-Rolle, der von der Anwendung übernommen wurde. Die Anwendung berücksichtigt die Zugriffskontrollen im IAM–Richtliniendokument für die Dauer dieser Sitzung.
   + Das `SubjectFromWebIdentityToken`-Feld enthält die eindeutige ID, die in einer IAM-Richtlinienvariablen für diesen bestimmten Identitätsanbieter erscheint. Die Folgenden sind die IAM-Richtlinienvariablen für unterstützte Anbieter und einige Beispielwerte für diese:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/amazondynamodb/latest/developerguide/WIF.RunningYourApp.html)

Beispiele für IAM-Richtlinien, in denen diese Richtlinienvariablen verwendet werden, finden Sie unter [Beispielrichtlinien: Verwenden von Bedingungen für die differenzierte Zugriffskontrolle](specifying-conditions.md#FGAC_DDB.Examples).

Weitere Informationen zur AWS STS Generierung temporärer Zugangsdaten finden Sie unter [Temporäre Sicherheitsanmeldedaten anfordern](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp_request.html) im *IAM-Benutzerhandbuch*.