Benutzerdefinierter Lambda-Auslöser für Sender - 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.

Benutzerdefinierter Lambda-Auslöser für Sender

Das Lambda löst E-Mail CustomEmailSender - und SMS-Benachrichtigungen von Drittanbietern in Benutzerpools aus und CustomSMSSender unterstützt diese. Sie können SMS- und E-Mail-Anbieter auswählen, um Benachrichtigungen an Benutzer aus Ihrem Lambda-Funktionscode zu senden. Wenn Amazon Cognito Einladungen, MFA-Codes, Bestätigungscodes, Bestätigungscodes und temporäre Passwörter an Benutzer sendet, aktivieren die Ereignisse Ihre konfigurierten Lambda-Funktionen. Amazon Cognito sendet den Code und die temporären Passwörter (Geheimnisse) an Ihre aktivierten Lambda-Funktionen. Amazon Cognito verschlüsselt diese Geheimnisse mit einem vom AWS KMS Kunden verwalteten Schlüssel und dem. AWS Encryption SDK Die AWS Encryption SDK ist eine clientseitige Verschlüsselungsbibliothek, mit der Sie generische Daten ver- und entschlüsseln können.

CustomEmailSender

Amazon Cognito ruft diesen Auslöser auf, um E-Mail-Benachrichtigungen an Benutzer zu senden.

Custom (Benutzerdefiniert)SMSSender

Amazon Cognito ruft diesen Auslöser auf, um SMS-Benachrichtigungen an Benutzer zu senden.

Konzepte der Verschlüsselung

Amazon Cognito sendet Benutzercodes in den Ereignissen, die es an benutzerdefinierte Absenderauslöser sendet, nicht im Klartext. Die Lambda-Funktionen müssen die Codes in den Ereignissen entschlüsseln. Die folgenden Konzepte beschreiben die Verschlüsselungsarchitektur, die Ihre Funktion verwenden muss, um Codes abzurufen, die sie Benutzern zur Verfügung stellen kann.

AWS KMS

AWS KMS ist ein verwalteter Dienst zum Erstellen und Steuern von AWS KMS Schlüsseln. Diese Schlüssel verschlüsseln Ihre Daten. Weitere Informationen finden Sie unter Was ist AWS Key Management Service?.

KMS-Schlüssel

Ein KMS-Schlüssel ist eine logische Darstellung eines kryptografischen Schlüssels. Der KMS-Schlüssel enthält Metadaten wie die Schlüssel-ID, das Erstellungsdatum, die Beschreibung und den Schlüsselstatus. Der KMS-Schlüssel enthält auch das zur Ver- und Entschlüsselung von Daten verwendete Schlüsselmaterial. Weitere Informationen finden Sie unter Löschen von AWS -KMS-Schlüsseln.

Symmetrische KMS-Schlüssel

Ein symmetrischer KMS-Schlüssel ist ein 256-Bit-Verschlüsselungsschlüssel, der AWS KMS nicht unverschlüsselt verlässt. Um einen symmetrischen KMS-Schlüssel zu verwenden, müssen Sie anrufen AWS KMS. Amazon Cognito verwendet symmetrische Schlüssel. Derselbe Schlüssel verschlüsselt und entschlüsselt. Weitere Informationen finden Sie unter Symmetrische KMS-Schlüssel.

Wissenswertes über Lambda-Trigger mit benutzerdefiniertem Sender

  • Sie können das AWS CLI oder SDK verwenden, um Ihre Benutzerpools für die Verwendung dieser Lambda-Auslöser zu konfigurieren. Diese Konfigurationen sind über die Amazon-Cognito-Konsole nicht verfügbar.

    Die UpdateUserPool Operation legt die Lambda-Konfiguration fest. Anfragen für diesen Vorgang erfordern alle Parameter Ihres Benutzerpools und die Parameter, die Sie ändern möchten. Wenn Sie nicht alle relevanten Parameter angeben, legt Amazon Cognito die Werte aller fehlenden Parameter auf ihre Standardwerte fest. Fügen Sie, wie im folgenden AWS CLI-Beispiel gezeigt, Einträge für alle Lambda-Funktionen hinzu, die Sie zu Ihrem Benutzerpool hinzufügen oder in diesem behalten möchten. Weitere Informationen finden Sie unter Aktualisierung der Benutzerpool- und App-Client-Konfiguration.

    #Send this parameter in an 'aws cognito-idp update-user-pool' CLI command, including any existing #user pool configurations. This snippet also includes a pre sign-up trigger for syntax reference. The pre sign-up trigger #doesn't have a role in custom sender triggers. --lambda-config "PreSignUp=lambda-arn, \ CustomSMSSender={LambdaVersion=V1_0,LambdaArn=lambda-arn}, \ CustomEmailSender={LambdaVersion=V1_0,LambdaArn=lambda-arn}, \ KMSKeyID=key-id"

    Für Anfragen, die den JSON-Text UpdateUserPool des folgenden LambdaConfig Snippets verwenden, werden benutzerdefinierte SMS- und E-Mail-Absenderfunktionen zugewiesen.

    "LambdaConfig": { "KMSKeyID": "arn:aws:kms:us-east-1:111122223333:key/a6c4f8e2-0c45-47db-925f-87854bc9e357", "CustomEmailSender": { "LambdaArn": "arn:aws:lambda:us-east-1:111122223333:function:MyFunction", "LambdaVersion": "V1_0" }, "CustomSMSSender": { "LambdaArn": "arn:aws:lambda:us-east-1:111122223333:function:MyFunction", "LambdaVersion": "V1_0" }
  • Um einen benutzerdefinierten Lambda-Sender-Trigger mit einem update-user-pool AWS CLI Befehl zu entfernen, lassen Sie den CustomEmailSender Parameter CustomSMSSender oder von weg --lambda-config und schließen Sie alle anderen Trigger ein, die Sie mit Ihrem Benutzerpool verwenden möchten.

    Wenn Sie einen benutzerdefinierten Lambda-Auslöser für Sender mit der API-Anfrage UpdateUserPool entfernen möchten, löschen Sie CustomSMSSender oder CustomEmailSender aus dem Anfragetext, der den Rest der Benutzerpool-Konfiguration enthält.

  • Amazon Cognito maskiert reservierte Zeichen wie < (&lt;) und > (&gt;) im temporären Passwort Ihres Benutzers im HTML-Format. Diese Zeichen können in temporären Passwörtern, die Amazon Cognito an Ihre benutzerdefinierte E-Mail-Senderfunktion sendet, jedoch nicht in temporären Verifizierungscodes vorkommen. Um temporäre Passwörter senden zu können, muss Ihre Lambda-Funktion die Maskierung dieser Zeichen aufheben, nachdem sie das Passwort entschlüsselt hat und bevor sie die Nachricht an Ihren Benutzer sendet.

Lambda-Trigger mit benutzerdefiniertem Absender aktivieren

Um benutzerdefinierte Logik zum Senden von SMS- oder E-Mail-Nachrichten für Ihren Benutzerpool zu verwenden, richten Sie benutzerdefinierte Absender-Trigger ein. Anhand des folgenden Verfahrens weisen Sie Ihrem Benutzerpool einen benutzerdefinierten SMS-Auslöser, einen benutzerdefinierten E-Mail-Auslöser oder beides zu. Nachdem Sie Ihren benutzerdefinierten Absender-Trigger hinzugefügt haben, sendet Amazon Cognito immer Benutzerattribute, einschließlich der Telefonnummer und des Einmalcodes, an Ihre Lambda-Funktion, anstatt das Standardverhalten, das eine SMS- oder E-Mail-Nachricht sendet.

  1. Erstellen Sie in () einen symmetrischen Verschlüsselungsschlüssel. AWS Key Management Service AWS KMS Amazon Cognito generiert Geheimnisse — temporäre Passwörter, Bestätigungscodes, Einmalkennwörter für die Authentifizierung und Bestätigungscodes — und verwendet dann diesen KMS-Schlüssel, um die Geheimnisse zu verschlüsseln. AWS Encryption SDK Sie können dann die Funktion AWS Encryption SDK in Ihrer Lambda-Funktion verwenden, um die Geheimnisse zu entschlüsseln und sie im Klartext an den Benutzer zu senden.

  2. Der IAM-Prinzipal, der Ihren Benutzerpool erstellt oder aktualisiert, erstellt einen einmaligen Zuschuss für den KMS-Schlüssel, den Amazon Cognito zur Verschlüsselung des Codes verwendet. Erteilen Sie diesem CreateGrant Prinzipalberechtigungen für Ihren KMS-Schlüssel. Damit dieses Beispiel für eine KMS-Schlüsselrichtlinie wirksam wird, muss der Administrator, der den Benutzerpool aktualisiert, mit einer Sitzung mit angenommener Rolle für die IAM-Rolle angemeldet sein. arn:aws:iam::111222333444:role/my-example-administrator-role

    Wenden Sie die folgende, an Ihre Umgebung angepasste, ressourcenbasierte Richtlinie auf Ihren KMS-Schlüssel an.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/my-example-administrator-role" }, "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:us-west-2:111122223333:key/1example-2222-3333-4444-999example", "Condition": { "StringEquals": { "kms:EncryptionContext:userpool-id": "us-west-2_EXAMPLE" } } }, { "Sid": "Allow Lambda to decrypt", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/my-lambda-function-role" }, "Action": "kms:Decrypt", "Resource": "*" }] }
  3. Erstellen Sie eine Lambda-Funktion für den benutzerdefinierten Sender-Auslöser. Amazon Cognito verwendet das AWS -Verschlüsselungs-SDK, um die Secrets, temporären Passwörter und Codes zu verschlüsseln, die die API-Anfragen Ihrer Benutzer autorisieren.

    1. Weisen Sie eine Lambda-Ausführungsrolle zu, die mindestens über kms:Decrypt Berechtigungen für Ihren KMS-Schlüssel verfügt.

    2. Verfassen Sie den Lambda-Funktionscode, um Ihre Nachrichten zu senden. Das Eingabeereignis für Ihre Funktion enthält ein Geheimnis. Entschlüsseln Sie in Ihrer Funktion das Geheimnis mit dem AWS Encryption SDK und verarbeiten Sie alle relevanten Metadaten. Senden Sie dann den Code, Ihre eigene benutzerdefinierte Nachricht und die Zieltelefonnummer an die benutzerdefinierte API, die Ihre Nachricht übermittelt.

    3. Fügen Sie das AWS Encryption SDK zu Ihrer Lambda-Funktion hinzu. Weitere Informationen finden Sie unter AWS -Verschlüsselungs-SDK – Programmiersprachen. Aktualisieren Sie das Lambda-Paket, indem Sie die folgenden Schritte ausführen.

      1. Exportieren Sie Ihre Lambda-Funktion als ZIP-Datei in die AWS Management Console.

      2. Öffnen Sie Ihre Funktion und fügen Sie die AWS Encryption SDK hinzu. Weitere Informationen und Download-Links finden Sie unter AWS Encryption SDK – Programmiersprachen im Entwicklerhandbuch zum AWS Encryption SDK .

      3. Komprimieren Sie Ihre Funktion mit Ihren SDK-Abhängigkeiten und laden Sie die Funktion in Lambda hoch. Weitere Informationen finden Sie unter Bereitstellen von Lambda-Funktionen als ZIP-Dateiarchive im Entwicklerhandbuch zu AWS Lambda .

  4. Gewähren Sie dem Amazon-Cognito-Serviceprinzipal cognito-idp.amazonaws.com-Zugriff, um die Lambda-Funktion aufzurufen.

    Der folgende AWS CLI Befehl erteilt Amazon Cognito die Erlaubnis, Ihre Lambda-Funktion aufzurufen:

    aws lambda add-permission --function-name lambda_arn --statement-id "CognitoLambdaInvokeAccess" --action lambda:InvokeFunction --principal cognito-idp.amazonaws.com
  5. Generieren Sie eine UpdateUserPoolAPI-Anfrage mit einem LambdaConfig Parameter, der benutzerdefinierte Lambda-Sender-Trigger hinzufügt. Sie können in der Amazon Cognito Cognito-Konsole keine Auslöser dieses Typs hinzufügen. Benutzerdefinierte Absender-Trigger erfordern die LambdaConfig Parameter KMSKeyID und CustomSMSSender oder CustomEmailSender (oder beide).