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-Generierung von Token
Da Amazon Cognito diesen Auslöser aufruft, bevor Token generiert werden, können Sie die Ansprüche in Benutzerpool-Token anpassen. Mit den grundlegenden Features von Version 1 oder dem Auslöserereignis V1_0
vor der Token-Generierung können Sie das Identitätstoken (ID) anpassen. In Benutzerpools mit aktiven erweiterten Sicherheits-Features können Sie das Ereignis der Version 2 oder das V2_0
-Auslöserereignis mit Anpassung des Zugriffstokens generieren.
Amazon Cognito sendet ein V1_0
-Ereignis als Anfrage an Ihre Funktion mit Daten, die in das Identitätstoken geschrieben werden. Ein V2_0
-Ereignis ist eine einzelne Anfrage mit den Daten, die Amazon Cognito sowohl in die Identitäts- als auch in die Zugriffstoken schreiben würde. Sie müssen Ihre Funktion so aktualisieren, dass sie die neueste Trigger-Version verwendet, und Daten für beide Token in derselben Antwort senden, wenn beide Token angepasst weden sollen.
Dieser Lambda-Auslöser kann einige Ansprüche in Identitäts- und Zugriffstoken hinzufügen, entfernen und ändern, bevor Amazon Cognito sie an Ihre App ausgibt. Um dieses Feature zu verwenden, verknüpfen Sie eine Lambda-Funktion aus der Amazon-Cognito-Benutzerpool-Konsole oder aktualisieren Ihren Benutzerpool LambdaConfig
über die AWS Command Line Interface
(AWS CLI).
Ereignisversionen
Ihr Benutzerpool kann verschiedene Versionen eines Trigger-Ereignisses vor der Token-Generierung an Ihre Lambda-Funktion liefern. Ein V1_0
Trigger liefert die Parameter für die Änderung von ID-Token. Ein V2_0
Trigger liefert Parameter für Folgendes.
-
Die Funktionen eines
V1_0
Triggers. -
Die Möglichkeit, Zugriffstoken anzupassen.
-
Die Fähigkeit, komplexe Datentypen an ID- und Zugriffstoken-Anspruchswerte zu übergeben:
-
String
-
Zahl
-
Boolesch
-
Array aus Zeichenketten, Zahlen, Booleschen Werten oder einer Kombination aus diesen
-
JSON
-
Anmerkung
Im ID-Token können Sie komplexe Objekte mit den Werten von Ansprüchen mit Ausnahme vonphone_number_verified
,email_verified
, updated_at
und auffüllen. address
Benutzerpools liefern standardmäßig V1_0
Ereignisse. Um Ihren Benutzerpool für das Senden eines V2_0
Ereignisses zu konfigurieren, wählen Sie eine Trigger-Event-Version von Basic features + access token customization, wenn Sie Ihren Trigger in der Amazon Cognito Cognito-Konsole konfigurieren. Sie können den Wert von auch LambdaVersion
in den LambdaConfigParametern einer UpdateUserPool CreateUserPool APIOder-Anfrage festlegen. Für die Anpassung des Zugriffstokens mit V2_0
Ereignissen fallen zusätzliche Kosten an. Weitere Informationen finden Sie unter Amazon Cognito – Preise
Ausgeschlossene Ansprüche und Bereiche
Amazon Cognito schränkt die Ansprüche und Bereiche ein, die Sie in Zugriffs- und Identitäts-Token hinzufügen, ändern oder unterdrücken können. Wenn Ihre Lambda-Funktion versucht, einen Wert für einen dieser Ansprüche festzulegen, gibt Amazon Cognito ein Token mit dem ursprünglichen Anspruchswert aus, sofern einer in der Anfrage vorhanden war.
Freigegebene Ansprüche
-
acr
-
amr
-
at_hash
-
auth_time
-
azp
-
exp
-
iat
-
iss
-
jti
-
nbf
-
nonce
-
origin_jti
-
sub
-
token_use
ID-Token-Ansprüche
-
identities
-
aud
-
cognito:username
Zugriffs-Token-Ansprüche
-
username
-
client_id
-
scope
Anmerkung
Sie können die Bereiche in einem Zugriffs-Token mit den Antwortwerten
scopesToAdd
undscopesToSuppress
ändern, denscope
-Anspruch können Sie jedoch nicht direkt ändern. Sie können keine Bereiche hinzufügen, die mitaws.cognito
beginnen, einschließlich des reservierten Bereichsaws.cognito.signin.user.admin
für Benutzerpools. -
device_key
-
event_id
-
version
Sie können keine Ansprüche mit den folgenden Präfixen hinzufügen oder überschreiben, Sie können sie jedoch unterdrücken oder verhindern, dass sie im Token erscheinen.
-
dev:
-
cognito:
Die IAM Rollen cognito:roles
beanspruchen und cognito:preferred_role
sind standardmäßig mit Benutzerpoolgruppen verknüpft. Um diese Ansprüche zu unterdrücken, drücken Sie sie cognito:groups
im claimsToSuppress
Objekt.
Sie können einen aud
-Anspruch zu Zugriffs-Token hinzufügen, jedoch muss dessen Wert mit der App-Client-ID der aktuellen Sitzung übereinstimmen. Sie können die Client-ID im Anforderungsereignis von event.callerContext.clientId
ableiten.
Anpassen des Identitäts-Token
Mit dem Lambda-Trigger vor der Token-Generierung können Sie den Inhalt eines Identitäts-Tokens (ID-Token) aus Ihrem Benutzerpool heraus anpassen. Das ID-Token stellt Benutzerattribute aus einer vertrauenswürdigen Identitätsquelle für die Anmeldung bei einer Web- oder mobilen App bereit. Weitere Informationen zu ID-Token finden Sie unter Grundlegendes zum Identitätstoken (ID).
Der Lambda-Trigger vor der Token-Generierung mit einem ID-Token kann unter anderem wie folgt verwendet werden.
-
Nehmen Sie zur Laufzeit eine Änderung an der IAM Rolle vor, die Ihr Benutzer aus einem Identitätspool anfordert.
-
Benutzerattribute aus einer externen Quelle hinzufügen.
-
Vorhandene Benutzerattributwerte hinzufügen oder ersetzen.
-
Die Offenlegung von Benutzerattributen unterdrücken, die aufgrund der autorisierten Bereiche Ihres Benutzers und des Lesezugriffs auf Attribute, die Sie Ihrem App-Client gewährt haben, andernfalls an Ihre App weitergegeben würden.
Anpassen des Zugriffs-Token
Mit dem Lambda-Trigger vor der Token-Generierung können Sie den Inhalt eines Zugriffs-Tokens aus Ihrem Benutzerpool heraus anpassen. Das Zugriffstoken autorisiert Benutzer, Informationen aus zugriffsgeschützten Ressourcen wie API Token-autorisierten Amazon Cognito Cognito-Vorgängen und Drittanbietern abzurufen. APIs Sie können zwar Zugriffstoken für die machine-to-machine (M2M-) Autorisierung mit Amazon Cognito mit einer Gewährung von Kundenanmeldedaten generieren, M2M-Anfragen rufen jedoch nicht die Triggerfunktion vor der Token-Generierung auf und können keine benutzerdefinierten Zugriffstoken ausgeben. Weitere Informationen zu Zugriffs-Token finden Sie unter Das Zugriffstoken verstehen.
Der Lambda-Trigger vor der Token-Generierung mit einem Zugriffs-Token kann unter anderem wie folgt verwendet werden.
-
Fügen Sie dem Anspruch OAuth 2.0-Bereiche hinzu oder unterdrücken Sie diese.
scope
Sie können beispielsweise Bereiche zu einem Zugriffstoken hinzufügen, das aus der Amazon API Cognito-Benutzerpool-Authentifizierung resultiert, wodurch nur der Bereich zugewiesen wird.aws.cognito.signin.user.admin
-
Die Mitgliedschaft eines Benutzers in Benutzerpool-Gruppen ändern.
-
Fügen Sie Ansprüche hinzu, die noch nicht in einem Amazon-Cognito-Zugriffstoken enthalten sind.
-
Unterdrücken Sie die Offenlegung von Ansprüchen, die andernfalls an Ihre App weitergeleitet würden.
Sie müssen den Benutzerpool so konfigurieren, dass eine aktualisierte Version der Trigger-Anforderung generiert wird um Zugriffsanpassungen in Ihrem Benutzerpool zu unterstützen. Aktualisieren Sie Ihren Benutzerpool wie im folgenden Verfahren gezeigt.
Themen
- Lambda-Auslöserquellen für die Vorab-Generierung von Token
- Lambda-Auslöserparameter für die Vorab-Generierung von Token
- Beispiel für ein Pre-Token-Auslöserereignis, Version 2: Ansprüche, Bereiche und Gruppen hinzufügen und unterdrücken
- Beispiel für das Ereignis vor der Token-Generierung, Version 2: Fügen Sie Ansprüche mit komplexen Objekten hinzu
- Beispiel für ein Version-Eins-Ereignis vor der Token-Generierung: Hinzufügen eines neuen Anspruchs und Löschen eines vorhandenen Anspruchs
- Beispiel für ein Version-Eins-Ereignis vor der Token-Generierung: Ändern der Gruppenmitgliedschaft des Benutzers
Lambda-Auslöserquellen für die Vorab-Generierung von Token
triggerSource Wert | Ereignis |
---|---|
TokenGeneration_HostedAuth |
Wird bei der Authentifizierung durch die Anmeldeseite der gehosteten Amazon-Cognito-Benutzeroberfläche aufgerufen. |
TokenGeneration_Authentication |
Wird aufgerufen, nachdem Benutzer-Authentifizierung-Abläufe abgeschlossen sind. |
TokenGeneration_NewPasswordChallenge |
Wird aufgerufen, nachdem der Benutzer von einem Administrator erstellt wurde. Dieser Ablauf wird aufgerufen, wenn der Benutzer ein temporäres Passwort ändern muss. |
TokenGeneration_AuthenticateDevice |
Wird am Ende der Authentifizierung eines Benutzergeräts aufgerufen. |
TokenGeneration_RefreshTokens |
Wird aufgerufen, wenn ein Benutzer versucht, die Identitäts- und Zugriffs-Token zu aktualisieren. |
Lambda-Auslöserparameter für die Vorab-Generierung von Token
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. Wenn Sie Ihrem Benutzerpool zur Pre-Token-Generierung einen Lambda-Trigger hinzufügen, können Sie eine Trigger-Version auswählen. Diese Version bestimmt, ob Amazon Cognito eine Anfrage mit zusätzlichen Parametern für die Anpassung von Zugriffs-Token an Ihre Lambda-Funktion weitergibt.
Anforderungsparameter für die Vorab-Generierung von Token
Name | Beschreibung | Minimale Trigger-Ereignisversion |
---|---|---|
userAttributes |
Die Attribute Ihres Benutzerprofils in Ihrem Benutzerpool. |
1 |
groupConfiguration |
Das Eingabeobjekt, das die aktuelle Gruppenkonfiguration enthält. Das Objekt umfasst |
1 |
groupsToOverride |
Die Benutzerpoolgruppen, in denen Ihr Benutzer Mitglied ist. |
1 |
iamRolesToÜberschreiben |
Sie können eine Benutzerpoolgruppe mit einer AWS Identity and Access Management (IAM) -Rolle verknüpfen. Dieses Element ist eine Liste aller IAM Rollen aus den Gruppen, in denen Ihr Benutzer Mitglied ist. |
1 |
preferredRole |
Sie können eine Priorität für Benutzerpoolgruppen festlegen. Dieses Element enthält den Namen der IAM Rolle aus der Gruppe mit der höchsten Priorität im |
1 |
clientMetadata |
Ein oder mehrere Schlüssel-Wert-Paare, die Sie als benutzerdefinierte Eingabe für die Lambda-Funktion angeben und für den Auslöser für die Pre-Token-Generierung bereitstellen können. Um diese Daten an Ihre Lambda-Funktion zu übergeben, verwenden Sie den ClientMetadata Parameter in den RespondToAuthChallengeAPIOperationen AdminRespondToAuthChallengeund. Amazon Cognito bezieht keine Daten aus dem |
1 |
Bereiche |
Die OAuth 2.0-Bereiche Ihres Benutzers. Die in einem Zugriffs-Token enthaltenen Bereiche sind die standardmäßigen und benutzerdefinierten Bereiche des Benutzerpools, die Ihr Benutzer angefordert hat und für deren Ausgabe Sie Ihren App-Client autorisiert haben. |
2 |
Antwortparameter für die Vorab-Generierung von Token
Name | Beschreibung | Minimale Trigger-Ereignisversion |
---|---|---|
claimsOverrideDetails | Ein Container für alle Elemente in einem V1_0 -Auslöserereignis. |
1 |
claimsAndScopeOverrideDetails |
Ein Container für alle Elemente in einem |
2 |
idTokenGeneration |
Die Ansprüche, die Sie im ID-Token Ihres Benutzers überschreiben, hinzufügen oder unterdrücken möchten. Diese Werte für die Anpassung des übergeordneten ID-Token erscheinen ausschließlich in Ereignissen der Version 2, während die untergeordneten Elemente in Ereignissen der Version 1 erscheinen. |
2 |
accessTokenGeneration |
Die Ansprüche, die Sie im Zugriffs-Token Ihres Benutzers überschreiben, hinzufügen oder unterdrücken möchten. Diese Werte für die Anpassung des Zugriffs-Token als übergeordnetes Element erscheinen ausschließlich in Ereignissen der Version 2. |
2 |
claimsToAddOrOverride |
Eine Zuordnung von einem oder mehreren Ansprüchen und deren Werte, die Sie hinzufügen oder ändern möchten. Für gruppenbezogene Ansprüche verwenden Sie stattdessen Bei Ereignissen der Version 2 erscheint dieses Element unter |
1* |
claimsToSuppress |
Eine Liste der Ansprüche, die Amazon Cognito unterdrücken soll. Wenn Ihre Funktion einen Anspruchswert unterdrückt und ersetzt, unterdrückt Amazon Cognito den Anspruch. Bei Ereignissen der Version 2 erscheint dieses Element unter |
1 |
groupOverrideDetails |
Das Ausgabeobjekt, das die aktuelle Gruppenkonfiguration enthält. Das Objekt umfasst Ihre Funktion ersetzt das Amazon-Cognito-ID und Zugriffstoken enthalten beide den |
1 |
scopesToAdd |
Eine Liste der OAuth 2.0-Bereiche, die Sie dem |
2 |
scopesToSuppress |
Eine Liste der OAuth 2.0-Bereiche, die Sie aus dem |
2 |
* Antwortobjekte auf Ereignisse der Version 1 können Zeichenketten zurückgeben. Antwortobjekte auf Ereignisse der Version 2 können komplexe Objekte zurückgeben.
Beispiel für ein Pre-Token-Auslöserereignis, Version 2: Ansprüche, Bereiche und Gruppen hinzufügen und unterdrücken
In diesem Beispiel werden die folgenden Änderungen an den Token eines Benutzers vorgenommen.
-
Legt ihren
family_name
alsDoe
im ID-Token fest. -
Verhindert, dass
email
- undphone_number
-Ansprüche im ID-Token erscheinen. -
Legt ihren ID-Token-
cognito:roles
-Anspruch auf"arn:aws:iam::123456789012:role\/sns_callerA","arn:aws:iam::123456789012:role\/sns_callerC","arn:aws:iam::123456789012:role\/sns_callerB"
fest. -
Legt ihren ID-Token-
cognito:preferred_role
-Anspruch aufarn:aws:iam::123456789012:role/sns_caller
fest. -
Fügt die Bereiche
openid
,email
undsolar-system-data/asteroids.add
zum Zugriffstoken hinzu. -
Unterdrückt den Bereich
phone_number
undaws.cognito.signin.user.admin
aus dem Zugriffstoken. Durch das Entfernen vonphone_number
wird das Abrufen der Telefonnummer des Benutzers vonuserInfo
verhindert. Durch das Entfernen von werden API Anfragen des Benutzers zum Lesen und Ändern seines eigenen Profils in den Amazon Cognito Cognito-Benutzerpoolsaws.cognito.signin.user.admin
API verhindert.Anmerkung
Das Entfernen von
phone_number
aus Bereichen verhindert nur dann das Abrufen der Telefonnummer eines Benutzers, wenn die verbleibenden Bereiche im Zugriffstokenopenid
und mindestens einen weiteren Standardbereich enthalten. Weitere Informationen finden Sie unter Grundlegendes zu Bereichen. -
Legt den ID-Token-
cognito:groups
-Anspruch auf"new-group-A","new-group-B","new-group-C"
fest.
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:
Beispiel für das Ereignis vor der Token-Generierung, Version 2: Fügen Sie Ansprüche mit komplexen Objekten hinzu
In diesem Beispiel werden die folgenden Änderungen an den Token eines Benutzers vorgenommen.
-
Fügt dem ID-Token Ansprüche der JSON Typen Zahl, Zeichenfolge, Boolean und Typ hinzu. Dies ist die einzige Änderung, die Triggerereignisse der zweiten Version für das ID-Token verfügbar machen.
-
Fügt dem Zugriffstoken Ansprüche vom Typ Zahl, Zeichenfolge, Boolean und JSON Typ hinzu.
-
Fügt dem Zugriffstoken drei Bereiche hinzu.
-
Unterdrückt die
sub
Ansprücheemail
und in den ID- und Zugriffstoken. -
Unterdrückt den
aws.cognito.signin.user.admin
Bereich im Zugriffstoken.
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:
Beispiel für ein Version-Eins-Ereignis vor der Token-Generierung: Hinzufügen eines neuen Anspruchs und Löschen eines vorhandenen Anspruchs
In diesem Beispiel wird ein Trigger-Ereignis der Version 1 mit einer Pre-Token-Generierungs-Lambda-Funktion verwendet, um einen neuen Anspruch hinzuzufügen und einen vorhandenen Anspruch zu unterdrücken.
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: Da das Code-Beispiel nicht alle Anforderungsparameter verarbeitet, können Sie ein Testereignis mit einer leeren Anfrage verwenden. Weitere Informationen zu allgemeinen Anforderungsparametern finden Sie unter Lambda-Auslöserereignis für einen Benutzerpool.
Beispiel für ein Version-Eins-Ereignis vor der Token-Generierung: Ändern der Gruppenmitgliedschaft des Benutzers
In diesem Beispiel wird ein Trigger-Ereignis der Version 1 mit einer Pre-Token-Generierungs-Lambda-Funktion verwendet, um die Gruppenmitgliedschaft des Benutzers zu ändern.
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: