Lambda-Auslöser für die Vorab-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 für die Vorab-Authentifizierung

Amazon Cognito ruft diesen Auslöser auf, wenn ein Benutzer sich anmelden möchte. Sie erhalten auf diese Weise die Möglichkeit, eine benutzerdefinierte Validierung zu erstellen, die vorbereitende Aktionen durchführt. Beispielsweise können Sie die Authentifizierungsanfrage ablehnen oder Sitzungsdaten für ein externes System aufzeichnen.

Anmerkung

Dieser Lambda-Trigger wird nicht aktiviert, wenn ein Benutzer nicht existiert oder bereits eine Sitzung in Ihrem Benutzerpool hat. Wenn die PreventUserExistenceErrors-Einstellung eines Benutzerpool-App-Clients auf ENABLED gesetzt ist, wird der Lambda-Trigger aktiviert.

Authentifizierungsprozess – Übersicht

Lambda-Auslöser für die Vorab-Authentifizierung – Client-Ablauf

Die Anfrage enthält Validierungsdaten des Clients, die aus den ClientMetadata-Werten stammen, die Ihre App an die Benutzerpool-API-Vorgänge InitiateAuth und AdminInitiateAuth übergibt.

Weitere Informationen finden Sie unter Ablauf der Authentifizierung in Benutzerpools.

Lambda-Auslöseparameter für die Vorab-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", . . . }, "validationData": { "string": "string", . . . }, "userNotFound": boolean }, "response": {} }

Anforderungsparameter für die Vorab-Authentifizierung

userAttributes

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

userNotFound

Amazon Cognito gibt diesen booleschen Wert ein, wenn Sie PreventUserExistenceErrors für Ihren Benutzerpool-Client auf ENABLED festgelegt haben.

validationData

Ein oder mehrere Schlüssel-Wert-Paare, die die Validierungsdaten in der Anmeldeanforderung des Benutzers enthalten. Um diese Daten an Ihre Lambda-Funktion zu übergeben, verwenden Sie den Parameter ClientMetadata in den API-Aktionen InitiateAuth und AdminInitiateAuth.

Antwortparameter für die Vorab-Authentifizierung

Amazon Cognito erwartet keine zusätzlichen Rückgabeinformationen in der Antwort. Ihre Funktion kann einen Fehler anzeigen, um den Anmeldeversuch abzulehnen oder API-Operationen zum Abfragen und Ändern Ihrer Ressourcen zu verwenden.

Beispiel für „Vorauthentifizierung“

Diese Beispielfunktion verhindert, dass sich Benutzer von einem bestimmten App-Client in Ihrem Benutzerpool anmelden. Da die Lambda-Funktion vor der Authentifizierung nicht aufgerufen wird, wenn Ihr Benutzer eine bestehende Sitzung hat, verhindert diese Funktion nur neue Sitzungen mit der App-Client-ID, die Sie blockieren möchten.

Node.js
const handler = async (event) => { if ( event.callerContext.clientId === "user-pool-app-client-id-to-be-blocked" ) { throw new Error("Cannot authenticate users from this user pool app client"); } return event; }; export { handler };
Python
def lambda_handler(event, context): if event['callerContext']['clientId'] == "<user pool app client id to be blocked>": raise Exception("Cannot authenticate users from this user pool app client") # 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
{ "callerContext": { "clientId": "<user pool app client id to be blocked>" }, "response": {} }