

Die AWS SDK für JavaScript Version 2 ist erreicht end-of-support. Wir empfehlen Ihnen, auf [AWS SDK für JavaScript Version 3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/) zu migrieren. Weitere Einzelheiten und Informationen zur Migration finden Sie in dieser [Ankündigung](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/).

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.

# Festlegen von Anmeldeinformationen
<a name="setting-credentials"></a>

AWS verwendet Anmeldeinformationen, um festzustellen, wer Dienste anruft und ob der Zugriff auf die angeforderten Ressourcen zulässig ist. 

Unabhängig davon, ob Ihr JavaScript Code in einem Webbrowser oder auf einem Node.js -Server ausgeführt wird, muss er gültige Anmeldeinformationen erhalten, bevor er über die API auf Dienste zugreifen kann. Anmeldeinformationen können für das Konfigurationsobjekt entweder mithilfe von `AWS.Config` global oder pro Service festgelegt werden, indem Sie die Anmeldeinformationen direkt an ein Serviceobjekt übergeben.

Es gibt mehrere Möglichkeiten, Anmeldeinformationen festzulegen, die sich zwischen Node.js und JavaScript in Webbrowsern unterscheiden. Die Themen in diesem Abschnitt beschreiben, wie Sie die Anmeldeinformationen in Node.js oder Web-Browsern definieren. In jedem Fall werden die Optionen in der empfohlenen Reihenfolge dargestellt.

## Bewährte Methoden für Anmeldeinformationen
<a name="credentials-best-practices"></a>

Durch das ordnungsgemäße Festlegen von Anmeldeinformationen wird sichergestellt, dass Ihre Anwendung oder Ihr Browser-Skript auf die benötigten Services und Ressourcen zugreifen kann. Gleichzeitig werden Sicherheitsrisiken minimiert, die geschäftskritische Anwendungen beeinträchtigen oder vertrauliche Daten kompromittieren könnten.

Ein wichtiger Grundsatz beim Einrichten von Anmeldeinformationen lautet, immer nur die geringstmöglichen Berechtigungen zu erteilen, die für eine Aufgabe erforderlich sind. Es ist sicherer, minimale Berechtigungen für Ihre Ressourcen bereitzustellen und bei Bedarf weitere Berechtigungen hinzuzufügen, anstatt Berechtigungen bereitzustellen, die die geringsten Rechte überschreiten, und aufgrund dessen zu einem späteren Zeitpunkt möglicherweise Sicherheitsprobleme beheben zu müssen. Wenn Sie beispielsweise nicht einzelne Ressourcen lesen und schreiben müssen, z. B. Objekte in einem Amazon S3 S3-Bucket oder einer DynamoDB-Tabelle, legen Sie für diese Berechtigungen nur Lesen fest.

Weitere Informationen zur Gewährung der geringsten Rechte finden Sie im Abschnitt „[Geringste Rechte gewähren“](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) des Themas „Bewährte Methoden“ im *IAM-Benutzerhandbuch*.

**Warnung**  
Obwohl es möglich ist, eine Hartcodierung Ihrer Anmeldeinformationen in einer Anwendung oder einem Browser-Skript vorzunehmen, wird hiervon abgeraten. Durch die harte Codierung von Anmeldeinformationen besteht die Gefahr, dass vertrauliche Informationen preisgegeben werden.

Weitere Informationen zur Verwaltung Ihrer Zugriffsschlüssel finden Sie unter [Bewährte Methoden für die Verwaltung von AWS Zugriffsschlüsseln](https://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html) in der Allgemeine AWS-Referenz.

**Topics**
+ [Bewährte Methoden für Anmeldeinformationen](#credentials-best-practices)
+ [Einrichten der Anmeldeinformationen in Node.js](setting-credentials-node.md)
+ [Festlegen von Anmeldeinformationen in einem Web-Browser](setting-credentials-browser.md)

# Einrichten der Anmeldeinformationen in Node.js
<a name="setting-credentials-node"></a>

Es gibt mehrere Möglichkeiten in Node.js, um dem SDK die Anmeldeinformationen bereitzustellen. Einige davon sind sicherer und andere bieten eine höhere Benutzerfreundlichkeit bei der Anwendungsentwicklung. Beim Abrufen von Anmeldeinformationen in Node.js sollten Sie vorsichtig sein, wenn Sie sich auf mehr als eine Quelle verlassen, wie z. B. auf eine von Ihnen geladene Umgebungsvariable und eine JSON-Datei. Sie können die Berechtigungen, unter denen Ihr Code ausgeführt wird, ändern, ohne sich dieser Änderung bewusst zu sein.

So können Sie Ihre Anmeldeinformationen angeben (in der Reihenfolge der Stärke der Empfehlung):

1. Aus AWS Identity and Access Management (IAM-) Rollen für Amazon geladen EC2

1. Aus der freigegebenen Anmeldeinformationsdatei (`~/.aws/credentials`) geladen

1. Aus den Umgebungsvariablen geladen

1. Aus einer JSON-Datei auf einem Datenträger geladen

1. Andere vom SDK bereitgestellte Klassen von Anbietern von Anmeldeinformationen JavaScript 

Wenn mehr als eine Quelle für Anmeldeinformationen für die SDK verfügbar ist, lautet die Standard-Auswahlpriorität wie folgt:

1. Anmeldeinformationen, die explizit über den Service-Client-Konstruktor festgelegt werden

1. Umgebungsvariablen

1. Die freigegebene Anmeldeinformationsdatei

1. Anmeldeinformationen, die aus dem ECS-Anmeldeinformationsanbieter geladen werden (wenn zutreffend)

1. Anmeldeinformationen, die mithilfe eines Anmeldeinformationsprozesses abgerufen werden, der in der gemeinsamen AWS Konfigurationsdatei oder der Datei mit den gemeinsamen Anmeldeinformationen angegeben ist. Weitere Informationen finden Sie unter [Laden von Anmeldeinformationen in Node.js über einen Prozess für konfigurierte Anmeldeinformationen](loading-node-credentials-configured-credential-process.md).

1. Anmeldeinformationen, die mithilfe des Anmeldeinformationsanbieters der EC2 Amazon-Instance aus AWS IAM geladen wurden (sofern in den Instance-Metadaten konfiguriert)

Weitere Informationen finden Sie unter [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Credentials.html)und [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CredentialProviderChain.html)in der API-Referenz.

**Warnung**  
Dies ist zwar möglich, wir empfehlen jedoch nicht, Ihre AWS Anmeldeinformationen in Ihrer Anwendung fest zu codieren. Die Hartcodierung der Anmeldeinformationen setzt die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel dem Risiko einer Offenlegung aus.

Die Themen in diesem Abschnitt beschreiben, wie Sie die Anmeldeinformationen in Node.js laden.

**Topics**
+ [Anmeldeinformationen in Node.js aus IAM-Rollen für Amazon laden EC2](loading-node-credentials-iam.md)
+ [Laden der Anmeldeinformationen für eine Node.js-Lambda-Funktion](loading-node-credentials-lambda.md)
+ [Laden der Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei](loading-node-credentials-shared.md)
+ [Laden der Anmeldeinformationen in Node.js aus den Umgebungsvariablen](loading-node-credentials-environment.md)
+ [Laden der Anmeldeinformationen in Node.js aus einer JSON-Datei](loading-node-credentials-json-file.md)
+ [Laden von Anmeldeinformationen in Node.js über einen Prozess für konfigurierte Anmeldeinformationen](loading-node-credentials-configured-credential-process.md)

# Anmeldeinformationen in Node.js aus IAM-Rollen für Amazon laden EC2
<a name="loading-node-credentials-iam"></a>

Wenn Sie Ihre Anwendung Node.js auf einer EC2 Amazon-Instance ausführen, können Sie IAM-Rollen für Amazon nutzen EC2 , um automatisch Anmeldeinformationen für die Instance bereitzustellen. Wenn Sie Ihre Instance für die Verwendung von IAM-Rollen konfigurieren, wählt das SDK automatisch die IAM-Anmeldeinformationen für Ihre Anwendung aus, sodass Sie keine Anmeldeinformationen manuell angeben müssen.

Weitere Informationen zum Hinzufügen von IAM-Rollen zu einer EC2 Amazon-Instance finden Sie unter [Verwenden von IAM-Rollen für EC2 Amazon-Instances](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-roles-for-ec2.html) im *AWS SDKs Tools-Referenzhandbuch.*

# Laden der Anmeldeinformationen für eine Node.js-Lambda-Funktion
<a name="loading-node-credentials-lambda"></a>

Wenn Sie eine AWS Lambda Funktion erstellen, müssen Sie eine spezielle IAM-Rolle erstellen, die über die Berechtigung zum Ausführen der Funktion verfügt. Diese Rolle wird *Ausführungsrolle* genannt. Wenn Sie eine Lambda-Funktion einrichten, müssen Sie die von Ihnen erstellte IAM-Rolle als entsprechende Ausführungsrolle angeben.

Die Ausführungsrolle stellt der Lambda-Funktion die Anmeldeinformationen zur Verfügung, die sie zum Ausführen und Aufrufen anderer Webdienste benötigt. Daher müssen Sie keine Anmeldeinformationen für den Code Node.js angeben, den Sie in einer Lambda-Funktion schreiben.

Weitere Informationen zum Erstellen einer Lambda-Ausführungsrolle finden Sie unter [Berechtigungen verwalten: Verwenden einer IAM-Rolle (Ausführungsrolle)](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role) im *AWS Lambda Entwicklerhandbuch*.

# Laden der Anmeldeinformationen in Node.js aus der freigegebenen Anmeldeinformationsdatei
<a name="loading-node-credentials-shared"></a>

Sie können Ihre AWS Anmeldedaten in einer gemeinsam genutzten Datei speichern, die von SDKs und der Befehlszeilenschnittstelle verwendet wird. Wenn das SDK für JavaScript geladen wird, durchsucht es automatisch die Datei mit den gemeinsamen Anmeldeinformationen, die den Namen „Anmeldeinformationen“ trägt. Wo Sie die freigegebene Anmeldeinformationsdatei speichern, hängt von Ihrem Betriebssystem ab:
+ Die Datei mit gemeinsam genutzten Anmeldeinformationen auf Linux, Unix und macOS: `~/.aws/credentials`
+ Die freigegebene Datei für Anmeldeinformationen auf Windows: `C:\Users\USER_NAME\.aws\credentials`

Wenn Sie noch keine freigegebene Anmeldeinformationsdatei haben, finden Sie weitere Informationen unter [SDK-Authentifizierung mit AWS](getting-your-credentials.md). Sobald Sie diese Anweisungen befolgt haben, sollte in der Anmeldeinformationsdatei ein Text ähnlich dem Folgenden angezeigt werden, in dem *<YOUR\$1ACCESS\$1KEY\$1ID>* sich Ihre Zugriffsschlüssel-ID und *<YOUR\$1SECRET\$1ACCESS\$1KEY>* Ihr geheimer Zugriffsschlüssel befinden:

```
[default]
aws_access_key_id = <YOUR_ACCESS_KEY_ID>
aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>
```

Ein Beispiel für die Verwendung dieser Datei finden Sie unter [Erste Schritte in Node.js](getting-started-nodejs.md).

Unter der `[default]`-Abschnittsüberschrift wird ein Standardprofil sowie die zugehörigen Werte für die Anmeldeinformationen festgelegt. Sie können zusätzliche Profile in der gleichen freigegebenen Konfigurationsdatei erstellen, wobei diese über ihre eigenen Anmeldeinformationen verfügen. Das folgende Beispiel zeigt eine Konfigurationsdatei mit dem Standardprofil und zwei zusätzlichen Profilen:

```
[default] ; default profile
aws_access_key_id = <DEFAULT_ACCESS_KEY_ID>
aws_secret_access_key = <DEFAULT_SECRET_ACCESS_KEY>
    
[personal-account] ; personal account profile
aws_access_key_id = <PERSONAL_ACCESS_KEY_ID>
aws_secret_access_key = <PERSONAL_SECRET_ACCESS_KEY>
    
[work-account] ; work account profile
aws_access_key_id = <WORK_ACCESS_KEY_ID>
aws_secret_access_key = <WORK_SECRET_ACCESS_KEY>
```

Standardmäßig prüft das SDK die Umgebungsvariable `AWS_PROFILE`, um zu bestimmen, welches Profil verwendet werden soll. Wenn die `AWS_PROFILE`-Variable in Ihrer Umgebung nicht festgelegt ist, verwendet das SDK die Anmeldeinformationen für das `[default]`-Profil. Um eines der alternativen Profile zu verwenden, müssen Sie den Wert der Umgebungsvariablen `AWS_PROFILE` einstellen oder ändern. Beispiel: Um die Anmeldeinformationen aus dem Arbeitskonto bei der oben gezeigten Konfigurationsdatei zu verwenden, legen Sie die `AWS_PROFILE` Umgebungsvariable auf `work-account` (passend für Ihr Betriebssystem).

**Anmerkung**  
Wenn Sie Umgebungsvariablen einstellen, stellen Sie sicher, dass Sie später die angemessenen Schritte durchführen (gemäß den Anforderungen Ihres Betriebssystems), um die Variablen in der Befehlszeile oder der Befehlsumgebung verfügbar zu machen.

Nachdem Sie die Umgebungsvariable festgelegt haben (falls erforderlich), können Sie eine JavaScript Datei ausführen, die das SDK verwendet, z. B. eine Datei mit dem Namen`script.js`.

```
$ node script.js
```

Sie können auch das vom SDK verwendete Profil explizit auswählen. Definieren Sie dazu entweder `process.env.AWS_PROFILE` vor dem Laden der SDK oder wählen Sie den Anmeldeinformationsanbieter aus, wie im folgenden Beispiel gezeigt:

```
var credentials = new AWS.SharedIniFileCredentials({profile: 'work-account'});
AWS.config.credentials = credentials;
```

# Laden der Anmeldeinformationen in Node.js aus den Umgebungsvariablen
<a name="loading-node-credentials-environment"></a>

Das SDK erkennt automatisch AWS Anmeldeinformationen, die in Ihrer Umgebung als Variablen festgelegt sind, und verwendet sie für SDK-Anfragen, sodass Sie keine Anmeldeinformationen in Ihrer Anwendung verwalten müssen. Die Umgebungsvariablen, die Sie zum Bereitstellen Ihrer Anmeldeinformationen festlegen, sind:
+ `AWS_ACCESS_KEY_ID`
+ `AWS_SECRET_ACCESS_KEY`
+ `AWS_SESSION_TOKEN`

Weitere Informationen zur Einstellung von Umgebungsvariablen finden Sie unter [Unterstützung von Umgebungsvariablen](https://docs.aws.amazon.com/sdkref/latest/guide/environment-variables.html) im Referenzhandbuch *AWS SDKs und im Tools-Referenzhandbuch*.

# Laden der Anmeldeinformationen in Node.js aus einer JSON-Datei
<a name="loading-node-credentials-json-file"></a>

Sie können die Konfigurations- und Anmeldeinformationen aus einem JSON-Dokument auf der Festplatte mithilfe von `AWS.config.loadFromPath` laden. Der angegebene Pfad ist relativ zum aktuellen Arbeitsverzeichnis Ihres Vorgangs. Um zum Beispiel Anmeldeinformationen aus einer `'config.json'`-Datei mit folgendem Inhalt zu laden:

```
{ "accessKeyId": <YOUR_ACCESS_KEY_ID>, "secretAccessKey": <YOUR_SECRET_ACCESS_KEY>, "region": "us-east-1" }
```

Verwenden Sie dann den folgenden Code:

```
var AWS = require("aws-sdk");
AWS.config.loadFromPath('./config.json');
```

**Anmerkung**  
Durch das Laden der Konfigurationsdaten aus einem JSON-Dokument werden alle vorhandenen Konfigurationsdaten zurückgesetzt. Fügen Sie nach Verwendung dieser Methode zusätzliche Konfigurationsdaten hinzu. Das Laden von Anmeldeinformationen aus einem JSON-Dokument wird in Browser-Skripts nicht unterstützt.

# Laden von Anmeldeinformationen in Node.js über einen Prozess für konfigurierte Anmeldeinformationen
<a name="loading-node-credentials-configured-credential-process"></a>

Sie können Anmeldeinformationen unter Verwendung einer Methode beschaffen, die nicht in das SDK integriert ist. Geben Sie dazu in der gemeinsamen Konfigurationsdatei oder der Datei mit den AWS gemeinsamen Anmeldeinformationen einen Prozess für Anmeldeinformationen an. Wenn die `AWS_SDK_LOAD_CONFIG` Umgebungsvariable auf einen beliebigen Wert gesetzt ist, bevorzugt das SDK den in der Konfigurationsdatei angegebenen Prozess gegenüber dem in der Anmeldeinformationsdatei angegebenen Prozess (falls vorhanden).

Einzelheiten zur Angabe eines Prozesses mit Anmeldeinformationen in der gemeinsamen AWS Konfigurationsdatei oder der Datei mit gemeinsam genutzten Anmeldeinformationen finden Sie in der *AWS CLI Befehlsreferenz*, insbesondere in den Informationen zur [Beschaffung von Anmeldeinformationen aus externen Prozessen](https://docs.aws.amazon.com/cli/latest/topic/config-vars.html#sourcing-credentials-from-external-processes).

Informationen zur Verwendung der `AWS_SDK_LOAD_CONFIG`-Umgebungsvariablen finden Sie unter [Verwenden einer freigegebenen Konfigurationsdatei](setting-region.md#setting-region-config-file) in diesem Dokument.

# Festlegen von Anmeldeinformationen in einem Web-Browser
<a name="setting-credentials-browser"></a>

Es gibt mehrere Möglichkeiten, um dem SDK die Anmeldeinformationen aus Browser-Skripts bereitzustellen. Einige davon sind sicherer und andere bieten eine höhere Benutzerfreundlichkeit bei der Entwicklung eines Skripts. So können Sie Ihre Anmeldeinformationen angeben (in der Reihenfolge der Stärke der Empfehlung):

1. Verwenden von Amazon Cognito Identity zur Benutzerauthentifizierung und Bereitstellung von Anmeldeinformationen

1. Verwenden von Web-Verbundidentitäten

1. Hartcodierung im Skript

**Warnung**  
Wir empfehlen nicht, Ihre AWS Anmeldeinformationen in Ihren Skripten fest zu codieren. Die Hartcodierung der Anmeldeinformationen setzt die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel dem Risiko einer Offenlegung aus.

**Topics**
+ [Verwenden von Amazon Cognito Identity zur Benutzerauthentifizierung](loading-browser-credentials-cognito.md)
+ [Verwenden von Web-Verbundidentitäten zum Authentifizieren von Benutzern](loading-browser-credentials-federated-id.md)
+ [Beispiele von Web-Verbundidentitäten](config-web-identity-examples.md)

# Verwenden von Amazon Cognito Identity zur Benutzerauthentifizierung
<a name="loading-browser-credentials-cognito"></a>

Die empfohlene Methode, AWS Anmeldeinformationen für Ihre Browserskripte zu erhalten, ist die Verwendung des Amazon Cognito Identity-Anmeldeinformationsobjekts,`AWS.CognitoIdentityCredentials`. Amazon Cognito ermöglicht die Authentifizierung von Benutzern über externe Identitätsanbieter.

Um Amazon Cognito Identity verwenden zu können, müssen Sie zunächst einen Identitätspool in der Amazon Cognito Cognito-Konsole erstellen. Ein Identitäten-Pool stellt die Gruppe von Identitäten dar, die Ihre Anwendung für Ihre Benutzer bereitstellt. Die den Benutzern zugewiesenen Identitäten identifizieren jedes Benutzerkonto eindeutig. Amazon-Cognito-Identitäten sind keine Anmeldeinformationen. Sie werden mithilfe der Unterstützung von Web Identity Federation in AWS -Security-Token-Service (AWS STS) gegen Anmeldeinformationen ausgetauscht.

Amazon Cognito hilft Ihnen, die Abstraktion von Identitäten über mehrere Identitätsanbieter hinweg mit dem Objekt zu verwalten. `AWS.CognitoIdentityCredentials` Die geladene Identität wird dann gegen Anmeldeinformationen in AWS STS ausgetauscht.

## Konfiguration des Amazon Cognito Identity Credentials-Objekts
<a name="browser-cognito-configuration"></a>

Wenn Sie noch keinen erstellt haben, erstellen Sie vor der Konfiguration `AWS.CognitoIdentityCredentials` einen Identitätspool, den Sie mit Ihren Browserskripten in der [Amazon Cognito Cognito-Konsole](https://console.aws.amazon.com/cognito) verwenden können. Erstellen Sie sowohl authentifizierte als auch nicht authentifizierte IAM-Rollen für Ihren Identitätspool und ordnen Sie sie zu.

Für nicht authentifizierte Benutzer wird die Identität nicht verifiziert, sodass diese Rolle für Gastbenutzer Ihrer Anwendung geeignet ist, oder in Fällen, in denen es keine Rolle spielt, ob Benutzer ihre Identität verifizieren lassen. Authentifizierte Benutzer melden sich bei Ihrer Anwendung über einen Drittanbieter an, der ihre Identität überprüft. Vergewissern Sie sich, dass Sie die Berechtigungen der Ressourcen entsprechend anpassen, damit Sie keinen Zugriff von nicht authentifizierten Benutzern darauf gewähren.

Nachdem Sie einen Identitäten-Pool mit angefügten Identitätsanbietern konfiguriert haben, können Sie mit `AWS.CognitoIdentityCredentials` Benutzer authentifizieren. Um die Anmeldeinformationen für Ihre Anwendung so zu konfigurieren, dass Sie `AWS.CognitoIdentityCredentials` verwenden können, setzen Sie die `credentials`-Eigenschaft für `AWS.Config` oder Sie verwenden eine servicespezifische Konfiguration. Im folgenden Beispiel wird verwende `AWS.Config`:

```
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
  IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',
  Logins: { // optional tokens, used for authenticated login
    'graph.facebook.com': 'FBTOKEN',
    'www.amazon.com': 'AMAZONTOKEN',
    'accounts.google.com': 'GOOGLETOKEN'
  }
});
```

Die optionale `Logins`-Eigenschaft ist eine Abbildung der Namen des Identitätsanbieters auf die Identitäts-Token für diese Anbieter. Wie Sie den Token von Ihrem Identitätsanbieter erhalten, hängt davon ab, welchen Anbieter Sie verwenden. Ist beispielsweise Facebook einer Ihrer Identitätsanbieter, könnten sie die `FB.login`-Funktion aus dem [Facebook SDK](https://developers.facebook.com/docs/facebook-login/web) verwenden, um ein Identitätsanbieter-Token zu erhalten:

```
FB.login(function (response) {
  if (response.authResponse) { // logged in
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
      IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',
      Logins: {
        'graph.facebook.com': response.authResponse.accessToken
      }
    });

    s3 = new AWS.S3; // we can now create our service object

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

## Wechseln von nicht authentifizierten Benutzern zu authentifizierten Benutzern
<a name="browser-switching-unauthenticated-users"></a>

Amazon Cognito unterstützt sowohl authentifizierte als auch nicht authentifizierte Benutzer. Nicht authentifizierte Benutzer erhalten Zugriff auf Ihre Ressourcen, auch wenn sie nicht über Ihre Identitätsanbieter angemeldet sind. Dieser Grad des Zugriffs ist nützlich, um Inhalte für Benutzer anzuzeigen, bevor diese sich anmelden. Jeder nicht authentifizierte Benutzer hat eine eindeutige Identität in Amazon Cognito, obwohl er nicht einzeln angemeldet und authentifiziert wurde.

### Anfänglich nicht authentifizierter Benutzer
<a name="browser-switching-initially-unauthenticated-user"></a>

Benutzer beginnen in der Regel mit der nicht authentifizierten Rolle, für die Sie die Eigenschaft für die Anmeldeinformationen Ihres Konfigurationsobjekts ohne eine `Logins`-Eigenschaft festlegen. In diesem Fall könnte Ihre Standardkonfiguration folgendermaßen aussehen:

```
// set the default config object
var creds = new AWS.CognitoIdentityCredentials({
 IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030'
});
AWS.config.credentials = creds;
```

### Wechseln Sie zum authentifizierten Benutzer
<a name="switch-to-authenticated"></a>

Wenn ein nicht authentifizierter Benutzer sich bei einem Identitätsanbieter anmeldet und Sie ein Token haben, können Sie den Benutzer von einem nicht authentifizierten in einen authentifizierten Benutzer umändern, indem Sie eine benutzerdefinierte Funktion aufrufen, welche das Anmeldeobjekt aktualisiert und das `Logins`-Token hinzufügt:

```
// Called when an identity provider has a token for a logged in user
function userLoggedIn(providerName, token) {
  creds.params.Logins = creds.params.Logins || {};
  creds.params.Logins[providerName] = token;
                    
  // Expire credentials to refresh them on the next request
  creds.expired = true;
}
```

Darüber hinaus können Sie ein `CognitoIdentityCredentials`-Objekt erstellen. Wenn Sie dies tun, müssen Sie die Eigenschaften für die Anmeldeinformationen der vorhandenen, von Ihnen erstellten Serviceobjekte zurücksetzen. Serviceobjekte lesen die globale Konfiguration nur während der Objektinitialisierung. 

Weitere Informationen zu dem `CognitoIdentityCredentials` Objekt finden Sie [https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html)in der API-Referenz. AWS SDK für JavaScript 

# Verwenden von Web-Verbundidentitäten zum Authentifizieren von Benutzern
<a name="loading-browser-credentials-federated-id"></a>

Sie können einzelne Identitätsanbieter direkt für den Zugriff auf AWS Ressourcen mithilfe des Web-Identitätsverbunds konfigurieren. AWS unterstützt derzeit die Authentifizierung von Benutzern mithilfe des Web-Identitätsverbunds über mehrere Identitätsanbieter:
+ [Login mit Amazon](https://login.amazon.com)
+ [Facebook-Anmeldung](https://www.facebook.com/about/login)
+ [Google-Anmeldung](https://developers.google.com/identity/)

Sie müssen Ihre Anwendung zunächst mit den Anbietern registrieren, die von Ihrer Anwendung unterstützt werden. Erstellen Sie als Nächstes eine IAM-Rolle und richten Sie die entsprechenden Berechtigungen ein. Die von Ihnen erstellte IAM-Rolle wird dann verwendet, um die Berechtigungen zu erteilen, die Sie dafür über den jeweiligen Identitätsanbieter konfiguriert haben. Sie können beispielsweise eine Rolle einrichten, die Benutzern, die sich über Facebook angemeldet haben, Lesezugriff auf einen bestimmten Amazon S3 S3-Bucket gewährt, den Sie kontrollieren.

Nachdem Sie sowohl eine IAM-Rolle mit konfigurierten Rechten als auch eine Anwendung bei den von Ihnen ausgewählten Identitätsanbietern registriert haben, können Sie das SDK so einrichten, dass Anmeldeinformationen für die IAM-Rolle mithilfe des Hilfscodes wie folgt abgerufen werden:

```
AWS.config.credentials = new AWS.WebIdentityCredentials({
   RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>/:role/<WEB_IDENTITY_ROLE_NAME>',
   ProviderId: 'graph.facebook.com|www.amazon.com', // this is null for Google
   WebIdentityToken: ACCESS_TOKEN
});
```

Der Wert des `ProviderId`-Parameters hängt vom angegebenen Identitätsanbieter ab. Der Wert des `WebIdentityToken`-Parameters ist das abgerufene Zugriffstoken aus einer erfolgreichen Anmeldung mit dem Identitätsanbieter. Weitere Informationen zum Konfigurieren und Abrufen von Zugriffstoken für die einzelnen Identitätsanbieter finden Sie in der Dokumentation des Identitätsanbieters.

## Schritt 1: Registrierung bei den Identitätsanbietern
<a name="config-web-identity-register"></a>

Registrieren Sie eine Anwendung zu Beginn bei den Identitätsanbietern, die Sie unterstützen möchten. Sie werden um Informationen gebeten, anhand derer Ihre Anwendung und möglicherweise auch deren Autor identifiziert werden können. Auf diese Weise wird sichergestellt, dass die Identitätsanbieter den Empfänger ihrer Benutzerinformationen kennen. In jedem Fall erstellt der Identitätsanbieter eine Anwendungs-ID, mit der Sie Benutzerrollen konfigurieren können.

## Schritt 2: Erstellen einer IAM-Rolle für einen Identitätsanbieter
<a name="config-web-identity-role"></a>

Nachdem Sie die Anwendungs-ID von einem Identitätsanbieter erhalten haben, rufen Sie die IAM-Konsole unter auf, [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)um eine neue IAM-Rolle zu erstellen.

**Um eine IAM-Rolle für einen Identitätsanbieter zu erstellen**

1. Rufen Sie in der Konsole den Abschnitt **Roles (Rollen)** auf und wählen Sie anschließend **Create new role (Neue Rolle erstellen)** aus.

1. Geben Sie einen Namen für die neue Rolle ein, über den Sie deren Verwendung verfolgen können, z. B. **facebookIdentity**. Wählen Sie anschließend **Next Step (Nächster Schritt)** aus.

1. Wählen Sie unter **Select Role Type (Rollentyp auswählen)** die Option **Role for Identity Provider Access (Rolle für den Zugriff von Identitätsanbietern)** aus.

1. Wählen Sie unter **Grant access to web identity providers (Web-Identitätsanbietern Zugriff gewähren)** die Option **Select (Auswählen)** aus.

1. Wählen Sie aus der Liste der **Identitätsanbieter** den Identitätsanbieter aus, den Sie für diese IAM-Rolle verwenden möchten.  
![\[Auswählen der Rolle für den Zugriff von Identitätsanbietern\]](http://docs.aws.amazon.com/de_de/sdk-for-javascript/v2/developer-guide/images/iam-provider-select.png)

1. Geben Sie die Anwendungs-ID des Identitätsanbieters im Feld **Application ID (Anwendungs-ID)** ein und wählen Sie dann **Next Step (Nächster Schritt)** aus

1. Konfigurieren Sie Berechtigungen für die Ressourcen, die Sie bereitstellen möchten, damit der Zugriff auf bestimmte Operationen für bestimmte Ressourcen gewährt wird. Weitere Informationen zu IAM-Berechtigungen finden Sie unter [Überblick über AWS IAM-Berechtigungen](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_permissions.html) im *IAM-Benutzerhandbuch*. Überprüfen Sie die Vertrauensstellung der Rolle und passen Sie sie erforderlichenfalls an. Klicken Sie anschließend auf **Next Step (Nächster Schritt)**.

1. Fügen Sie zusätzliche benötigte Richtlinien an und wählen Sie dann **Next Step (Nächster Schritt)** aus. Weitere Informationen zu IAM-Richtlinien finden Sie unter [Übersicht über IAM-Richtlinien](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies.html) im *IAM-Benutzerhandbuch*.

1. Prüfen Sie die neue Rolle und wählen Sie dann **Create Role (Rolle erstellen)** aus.

Sie können weitere Einschränkungen für die Rolle festlegen, z. B. den Geltungsbereich auf einen bestimmten Benutzer beschränken. IDs Wenn die Rolle Schreibberechtigungen für Ihre Ressourcen erteilt, stellen Sie sicher, dass Sie die Rolle nur Benutzern mit den entsprechenden Berechtigungen zuordnen, ansonsten kann jeder Benutzer mit einer Amazon-, Facebook- oder Google-Identität Änderungen an Ihren Ressourcen vornehmen.

Weitere Informationen zur Verwendung von Web Identity Federation in IAM finden Sie unter [About Web Identity Federation](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers_oidc.html) im *IAM-Benutzerhandbuch*.

## Schritt 3: Abrufen eines Zugriffstokens für Anbieter nach der Anmeldung
<a name="config-web-identity-obtain-token"></a>

Richten Sie die Anmeldung für Ihre Anwendung ein, indem Sie das SDK des Identitätsanbieters verwenden. Sie können ein JavaScript SDK vom Identitätsanbieter herunterladen und installieren, das die Benutzeranmeldung entweder mit OpenID OAuth oder OpenID ermöglicht. Weitere Informationen zum Herunterladen und Einrichten des SDK-Codes in Ihrer Anwendung finden Sie in der SDK-Dokumentation Ihres Identitätsanbieters:
+ [Login mit Amazon](https://login.amazon.com/website)
+ [Facebook-Anmeldung](https://developers.facebook.com/docs/javascript)
+ [Google-Anmeldung](https://developers.google.com/identity/)

## Schritt 4: Abrufen temporärer Anmeldeinformationen
<a name="config-web-identity-get-credentials"></a>

Nachdem Sie die Anwendung, Rollen und Ressourcenberechtigungen konfiguriert haben, fügen Sie Ihrer Anwendung den Code hinzu, um temporäre Anmeldeinformationen zu erhalten. Diese Anmeldeinformationen werden über den AWS -Security-Token-Service Webidentitätsverbund bereitgestellt. Benutzer melden sich beim Identitätsanbieter an, wodurch Ihnen ein Zugriffstoken bereitgestellt wird. Richten Sie das `AWS.WebIdentityCredentials` Objekt mithilfe des ARN für die IAM-Rolle ein, die Sie für diesen Identitätsanbieter erstellt haben:

```
AWS.config.credentials = new AWS.WebIdentityCredentials({
    RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>',
    ProviderId: 'graph.facebook.com|www.amazon.com', // Omit this for Google
    WebIdentityToken: ACCESS_TOKEN // Access token from identity provider
});
```

Serviceobjekte, die anschließend erstellt werden, verfügen über die entsprechenden Anmeldeinformationen. Objekte, die vor der Einrichtung der `AWS.config.credentials`-Eigenschaft erstellt wurden, verfügen nicht über die aktuellen Anmeldeinformationen.

Sie können `AWS.WebIdentityCredentials` auch vor dem Abrufen des Zugriffstokens erstellen. Auf diese Weise können Sie Serviceobjekte erstellen, die von den Anmeldeinformationen abhängen, bevor Sie das Zugriffstoken laden. Erstellen Sie hierzu das Anmeldeinformationsobjekt ohne den `WebIdentityToken`-Parameter:

```
AWS.config.credentials = new AWS.WebIdentityCredentials({
  RoleArn: 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>',
  ProviderId: 'graph.facebook.com|www.amazon.com' // Omit this for Google
});

// Create a service object
var s3 = new AWS.S3;
```

Definieren Sie anschließend `WebIdentityToken` im Callback des SDK des Identitätsanbieters, das den Zugriffstoken enthält:

```
AWS.config.credentials.params.WebIdentityToken = accessToken;
```

# Beispiele von Web-Verbundidentitäten
<a name="config-web-identity-examples"></a>

Im Folgenden finden Sie einige Beispiele für die Verwendung von Web Federated Identity zum Abrufen von Anmeldeinformationen im Browser. JavaScript Diese Beispiele müssen über ein Host-Schema „http://“ oder „https://“ ausgeführt werden, um sicherzustellen, dass die Weiterleitung an Ihre Anwendung durch den Identitätsanbieter erfolgen kann. 

## Beispiel für Login with Amazon
<a name="config-web-identity-amazon-login-example"></a>

Der folgende Code zeigt, wie Sie Login with Amazon als Identitätsanbieter verwenden. 

```
<a href="#" id="login">
  <img border="0" alt="Login with Amazon"
    src="https://images-na.ssl-images-amazon.com/images/G/01/lwa/btnLWA_gold_156x32.png"
    width="156" height="32" />
</a>
<div id="amazon-root"></div>
<script type="text/javascript">
  var s3 = null;
  var clientId = 'amzn1.application-oa2-client.1234567890abcdef'; // client ID
  var roleArn = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>';

  window.onAmazonLoginReady = function() {
    amazon.Login.setClientId(clientId); // set client ID

    document.getElementById('login').onclick = function() {
      amazon.Login.authorize({scope: 'profile'}, function(response) {
        if (!response.error) { // logged in
          AWS.config.credentials = new AWS.WebIdentityCredentials({
            RoleArn: roleArn,
            ProviderId: 'www.amazon.com',
            WebIdentityToken: response.access_token
          });

          s3 = new AWS.S3();

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

  (function(d) {
    var a = d.createElement('script'); a.type = 'text/javascript';
    a.async = true; a.id = 'amazon-login-sdk';
    a.src = 'https://api-cdn.amazon.com/sdk/login1.js';
    d.getElementById('amazon-root').appendChild(a);
  })(document);
</script>
```

## Beispiel für eine Facebook-Anmeldung
<a name="config-web-identity-facebook-login-example"></a>

Der folgende Code zeigt, wie Sie die Facebook-Anmeldung als Identitätsanbieter verwenden:

```
<button id="login">Login</button>
<div id="fb-root"></div>
<script type="text/javascript">
var s3 = null;
var appId = '1234567890'; // Facebook app ID
var roleArn = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>';

window.fbAsyncInit = function() {
  // init the FB JS SDK
  FB.init({appId: appId});

  document.getElementById('login').onclick = function() {
    FB.login(function (response) {
      if (response.authResponse) { // logged in
        AWS.config.credentials = new AWS.WebIdentityCredentials({
          RoleArn: roleArn,
          ProviderId: 'graph.facebook.com',
          WebIdentityToken: response.authResponse.accessToken
        });

        s3 = new AWS.S3;

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

// Load the FB JS SDK asynchronously
(function(d, s, id){
   var js, fjs = d.getElementsByTagName(s)[0];
   if (d.getElementById(id)) {return;}
   js = d.createElement(s); js.id = id;
   js.src = "//connect.facebook.net/en_US/all.js";
   fjs.parentNode.insertBefore(js, fjs);
 }(document, 'script', 'facebook-jssdk'));
</script>
```

## Beispiel für eine Google\$1-Anmeldung
<a name="config-web-identity-google-login-example"></a>

Der folgende Code zeigt, wie Sie die Google\$1-Anmeldung als Identitätsanbieter verwenden. Das Zugriffstoken für den Web-Identitätsverbund von Google wird im `response.id_token` und nicht im `access_token` gespeichert, wie dies bei anderen Identitätsanbietern der Fall ist. 

```
<span
  id="login"
  class="g-signin"
  data-height="short"
  data-callback="loginToGoogle"
  data-cookiepolicy="single_host_origin"
  data-requestvisibleactions="http://schemas.google.com/AddActivity"
  data-scope="https://www.googleapis.com/auth/plus.login">
</span>
<script type="text/javascript">
  var s3 = null;
  var clientID = '1234567890.apps.googleusercontent.com'; // Google client ID
  var roleArn = 'arn:aws:iam::<AWS_ACCOUNT_ID>:role/<WEB_IDENTITY_ROLE_NAME>';

  document.getElementById('login').setAttribute('data-clientid', clientID);
  function loginToGoogle(response) {
    if (!response.error) {
      AWS.config.credentials = new AWS.WebIdentityCredentials({
        RoleArn: roleArn, WebIdentityToken: response.id_token
      });

      s3 = new AWS.S3();

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

  (function() {
    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
    po.src = 'https://apis.google.com/js/client:plusone.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
  })();
 </script>
```