Lambda-Auslöser nach der Authentifizierung - Amazon Cognito

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.

Lambda-Auslöser nach der Authentifizierung

Amazon Cognito ruft diesen Auslöser nach der Anmeldung eines Benutzers auf, sodass Sie benutzerdefinierte Logik für nach der Authentifizierung des Benutzers durch Amazon Cognito hinzufügen können.

Authentifizierungsprozess – Übersicht


                Lambda-Auslöser nach der Authentifizierung – Client-Ablauf

Weitere Informationen finden Sie unter Ablauf der Authentifizierung in Benutzerpools.

Lambda-Auslöseparameter nach der Authentifizierung

Die Anforderung, die Amazon Cognito an diese Lambda-Funktion übergibt, ist eine Kombination der folgenden Parameter und der allgemeinen Parameter, die Amazon Cognito allen Anfragen hinzufügt.

JSON
{ "request": { "userAttributes": { "string": "string", . . . }, "newDeviceUsed": boolean, "clientMetadata": { "string": "string", . . . } }, "response": {} }

Anforderungsparameter nach der Authentifizierung

newDeviceUsed

Dieses Flag zeigt an, ob Sich der Benutzer an einem neuen Gerät angemeldet hat. Amazon Cognito setzt dieses Flag nur, wenn der Wert des Benutzerpools für gespeicherte Geräte auf Always oder User Opt-In gesetzt ist.

userAttributes

Ein oder mehrere Name-Wert-Paare, die Benutzerattribute darstellen.

clientMetadata

Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion bereitstellen können, die Sie für den Auslöser nach der Authentifizierung angeben. Sie können den ClientMetadata-Parameter in den API-Aktionen AdminRespondToAuthChallenge und RespondToAuthChallenge verwenden, um diese Daten an Ihre Lambda-Funktion zu übergeben. Amazon Cognito enthält keine Daten aus dem ClientMetadata-Parameter in AdminInitiateAuth und InitiateAuth-API-Operationen in der Anforderung, die es an die Funktion nach der Authentifizierung übergibt.

Antwortparameter nach der Authentifizierung

Amazon Cognito erwartet keine zusätzlichen Rückgabeinformationen in der Antwort. Ihre Funktion kann API-Operationen verwenden, um Ihre Ressourcen abzufragen und zu ändern oder Ereignismetadaten in einem externen System aufzuzeichnen.

Tutorials für die Authentifizierung

Unmittelbar nachdem Amazon Cognito einen Benutzer anmeldet, aktiviert es die Lambda-Funktion nach der Authentifizierung. Weitere Informationen finden Sie in diesen Tutorials für die Anmeldung für JavaScript, Android und iOS.

Plattform Tutorial
JavaScript Identity SDK Benutzer mit JavaScript anmelden
Android Identity SDK Benutzer mit Android anmelden
iOS Identity SDK Benutzer mit iOS anmelden

Beispiel für „Nachauthentifizierung“

Dieser Lambda-Beispielfunktion für nach der Authentifizierung sendet Daten aus einer erfolgreichen Anmeldung an CloudWatch Logs.

Node.js
const handler = async (event) => { // Send post authentication data to Amazon CloudWatch logs console.log("Authentication successful"); console.log("Trigger function =", event.triggerSource); console.log("User pool = ", event.userPoolId); console.log("App client ID = ", event.callerContext.clientId); console.log("User ID = ", event.userName); return event; }; export { handler }
Python
import os def lambda_handler(event, context): # Send post authentication data to Cloudwatch logs print ("Authentication successful") print ("Trigger function =", event['triggerSource']) print ("User pool = ", event['userPoolId']) print ("App client ID = ", event['callerContext']['clientId']) print ("User ID = ", event['userName']) # Return to Amazon Cognito return event

Amazon Cognito übergibt Ereignisinformationen an Ihre Lambda-Funktion. Die Funktion gibt dann das gleiche Ereignisobjekt mit allen Änderungen in der Antwort an Amazon Cognito zurück. Sie können in der Lambda-Konsole ein Testereignis mit den für Ihren Lambda-Auslöser relevanten Daten einrichten. Das Folgende ist ein Testereignis für dieses Codebeispiel:

JSON
{ "triggerSource": "testTrigger", "userPoolId": "testPool", "userName": "testName", "callerContext": { "clientId": "12345" }, "response": {} }