Authentifizieren von Benutzern mithilfe von Amazon Cognito Identity - AWS SDK for JavaScript

Wir haben das Kommende end-of-support für AWS SDK for JavaScript v2 angekündigt. Wir empfehlen Ihnen, auf AWS SDK for JavaScript Version 3 zu migrieren. Termine, weitere Details und Informationen zur Migration finden Sie in der verlinkten Ankündigung.

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.

Authentifizieren von Benutzern mithilfe von Amazon Cognito Identity

Der empfohlene Weg zu erhaltenAWSAnmeldeinformationen für Ihre Browserskripts sind die Verwendung des Amazon Cognito Identity Credentials -ObjektAWS.CognitoIdentityCredentialsaus. Amazon Cognito ermöglicht die Authentifizierung von Benutzern über Identitätsanbieter von Drittanbietern.

Um Amazon Cognito Identity verwenden zu können, müssen Sie zuerst 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 Identitäten, die den Benutzern zugewiesen wurden, identifizieren eindeutig die einzelnen Benutzerkonten. Amazon-Cognito-Identitäten sind keine Anmeldeinformationen. Sie werden über die Unterstützung des Web-Identitätsverbunds in AWS Security Token Service (AWS STS) gegen Anmeldeinformationen ausgetauscht.

Amazon Cognito unterstützt Sie dabei, die Abstraktion von Identitäten über mehrere Identitätsanbieter hinweg mithilfe desAWS.CognitoIdentityCredentials-Objekt. Die geladene Identität wird dann gegen Anmeldeinformationen in AWS STS ausgetauscht.

Konfigurieren des Amazon Cognito Cognito-Identitäts-Objekts

Falls Sie es bisher noch nicht getan haben, erstellen Sie einen Identitäten-Pool für die Verwendung mit Ihren Browser-Skripts imAmazon-Cognito-Konsolebevor Sie konfigurierenAWS.CognitoIdentityCredentialsaus. Erstellen und verknüpfen Sie sowohl authentifizierte als auch nicht authentifizierte IAM-Rollen für Ihren Identitäten-Pool.

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 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

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, auch wenn er nicht individuell angemeldet und authentifiziert ist.

Anfänglich nicht authentifizierter Benutzer

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

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 zuCognitoIdentityCredentialsObjekt, sieheAWS.CognitoIdentityCredentialsimAWS SDK for JavaScriptAPI-Referenz.