Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Trigger Lambda di pre-generazione del token
Poiché Amazon Cognito richiama questo trigger prima della generazione di token, puoi personalizzare le richieste di token dei pool di utenti. Con le funzionalità di base dell'evento di attivazione della versione 1 o V1_0
precedente alla generazione del token, puoi personalizzare il token di identità (ID). Nei pool di utenti con funzionalità di sicurezza avanzate attive, puoi generare la versione 2 o V2_0
dell'evento di attivazione con la personalizzazione del token di accesso.
Amazon Cognito invia un evento V1_0
come richiesta alla funzione con dati che scriverebbe sul token ID. Un evento V2_0
è una singola richiesta con i dati che Amazon Cognito scriverebbe sia nel token di identità che nel token di accesso. Per personalizzare entrambi i token, devi aggiornare la funzione in modo da utilizzare la versione trigger più recente e inviare i dati per entrambi i token nella stessa risposta.
Questo trigger Lambda può aggiungere, rimuovere e modificare alcune richieste nei token di identità e accesso prima che Amazon Cognito le invii all'app. Per usare questa funzionalità, puoi associare una funzione Lambda dalla console del pool di utenti di Amazon Cognito o aggiornare il pool di utenti LambdaConfig
tramite la AWS Command Line Interface
(AWS CLI).
Versioni degli eventi
Il tuo pool di utenti può fornire diverse versioni di un evento di attivazione precedente alla generazione di token alla tua funzione Lambda. Un V1_0
trigger fornisce i parametri per la modifica dei token ID. Un V2_0
trigger fornisce i parametri per quanto segue.
-
Le funzioni di un
V1_0
trigger. -
La possibilità di personalizzare i token di accesso.
-
La possibilità di passare tipi di dati complessi a ID e accedere ai valori delle richieste di token:
-
Stringa
-
Numero
-
Booleano
-
Matrice di stringhe, numeri, valori booleani o una combinazione di questi
-
JSON
-
Nota
Nel token ID, è possibile compilare oggetti complessi in base ai valori delle attestazioni ad eccezione diphone_number_verified
,, email_verified
e. updated_at
address
I pool di utenti forniscono V1_0
eventi per impostazione predefinita. Per configurare il tuo pool di utenti per l'invio di un V2_0
evento, scegli una versione Trigger event delle funzionalità di Basic + personalizzazione del token di accesso quando configuri il trigger nella console Amazon Cognito. Puoi anche impostare il valore di LambdaVersion
nei LambdaConfigparametri in una richiesta UpdateUserPool o CreateUserPool API. Si applicano costi aggiuntivi per la personalizzazione dei token di accesso con V2_0
eventi. Per ulteriori informazioni, consultare Prezzi di Amazon Cognito
Attestazioni e ambiti esclusi
Amazon Cognito limita le attestazioni e gli ambiti che puoi aggiungere, modificare o sopprimere nei token di accesso e identità. Se la funzione Lambda tenta di impostare un valore per una di queste attestazioni, Amazon Cognito emette un token con il valore dell'attestazione originale, se presente nella richiesta.
Attestazioni condivise
-
acr
-
amr
-
at_hash
-
auth_time
-
azp
-
exp
-
iat
-
iss
-
jti
-
nbf
-
nonce
-
origin_jti
-
sub
-
token_use
Attestazioni relative ai token ID
-
identities
-
aud
-
cognito:username
Attestazioni relative ai token di accesso
-
username
-
client_id
-
scope
Nota
Puoi modificare gli ambiti in un token di accesso con valori di risposta
scopesToAdd
escopesToSuppress
, ma non puoi modificare direttamente l'attestazionescope
. Non è possibile aggiungere ambiti che iniziano conaws.cognito
, incluso l'ambito riservato dei pool di utentiaws.cognito.signin.user.admin
. -
device_key
-
event_id
-
version
Non è possibile aggiungere o sostituire le attestazioni con i seguenti prefissi, ma è possibile sopprimerle o impedire che vengano visualizzate nel token.
-
dev:
-
cognito:
Puoi aggiungere un'attestazione aud
ai token di accesso, ma il relativo valore deve corrispondere all'ID client dell'app della sessione corrente. Puoi derivare l'ID del client nell'evento di richiesta da event.callerContext.clientId
.
Personalizzazione del token di identità
Con il trigger Lambda di pre-generazione di token, puoi personalizzare il contenuto di un token ID dal pool di utenti. Il token ID fornisce gli attributi utente da un'origine di identità affidabile per l'accesso a un'app web o per dispositivi mobili. Per ulteriori informazioni sui token ID, consulta Utilizzo di token ID.
Gli usi del trigger Lambda di pre-generazione di token con un token ID includono quanto segue.
-
Apportare una modifica in fase di runtime al ruolo IAM richiesto dall'utente da un pool di identità.
-
Aggiungere gli attributi utente da un'origine esterna.
-
Aggiungere o sostituire i valori degli attributi utente esistenti.
-
Sopprimere la divulgazione degli attributi utente che, a causa degli ambiti autorizzati dell'utente e dell'accesso in lettura agli attributi concesso al client dell'app, verrebbero altrimenti trasferiti all'app.
Personalizzazione del token di accesso
Con il trigger Lambda di pre-generazione di token, puoi personalizzare il contenuto di un token di accesso dal pool di utenti. Il token di accesso autorizza gli utenti a recuperare informazioni da risorse ad accesso protetto come operazioni API autorizzate da token Amazon Cognito e API di terze parti. Sebbene sia possibile generare token di accesso per l'autorizzazione machine-to-machine (M2M) con Amazon Cognito con una concessione di credenziali client, le richieste M2M non richiamano la funzione di attivazione precedente alla generazione di token e non possono emettere token di accesso personalizzati. Per ulteriori informazioni sui token di accesso, consulta Utilizzo del token di accesso.
Gli usi del trigger Lambda di pre-generazione di token con un token di accesso includono i seguenti.
-
Aggiungere o sopprimere gli ambiti OAuth 2.0 nell'attestazione
scope
. Ad esempio, puoi aggiungere ambiti a un token di accesso ottenuto dall'autenticazione API dei pool di utenti di Amazon Cognito, che assegna solo l'ambitoaws.cognito.signin.user.admin
. -
Modificare l'appartenenza di un utente ai gruppi di pool di utenti.
-
Aggiunta di richieste non ancora presenti in un token di accesso Amazon Cognito.
-
Bloccare la divulgazione di attestazioni che altrimenti verrebbero trasmesse all'app.
Per supportare la personalizzazione dell'accesso nel pool di utenti, è necessario configurare il pool di utenti per generare una versione aggiornata della richiesta di trigger. Aggiornare il pool di utenti come illustrato nella procedura seguente.
Argomenti
- Origini del trigger Lambda di pre-generazione del token
- Parametri del trigger Lambda di pre-generazione del token
- Esempio della versione due dell'evento trigger pre-token: aggiunta ed eliminazione di richieste, ambiti e gruppi
- Evento precedente alla generazione di token (versione due): aggiungere attestazioni con oggetti complessi
- Esempio di evento versione 1 di generazione del pre-token: aggiunta di una nuova richiesta ed eliminazione di una richiesta esistente
- Esempio di evento versione 1 di generazione del pre-token: modifica dell'appartenenza al gruppo dell'utente
Origini del trigger Lambda di pre-generazione del token
Valore triggerSource | Evento |
---|---|
TokenGeneration_HostedAuth |
Richiamato durante l'autenticazione dalla pagina di accesso dell'interfaccia utente ospitata di Amazon Cognito. |
TokenGeneration_Authentication |
Chiamato dopo che i flussi di autenticazione degli utenti sono terminati. |
TokenGeneration_NewPasswordChallenge |
Chiamato dopo che l'utente viene creato da un amministratore. Questo flusso viene chiamato quando l'utente deve cambiare una password temporanea. |
TokenGeneration_AuthenticateDevice |
Chiamato alla fine dell'autenticazione di un dispositivo dell'utente. |
TokenGeneration_RefreshTokens |
Chiamato quando un utente cerca di aggiornare l'identità e i token di accesso. |
Parametri del trigger Lambda di pre-generazione del token
La richiesta passata da Amazon Cognito a questa funzione Lambda è una combinazione dei parametri seguenti e dei parametri comuni aggiunti da Amazon Cognito a tutte le richieste. Quando aggiungi un trigger Lambda di pre-generazione di token al pool di utenti, puoi scegliere una versione del trigger. Questa versione determina se Amazon Cognito passa una richiesta alla funzione Lambda con parametri aggiuntivi per la personalizzazione del token di accesso.
Parametri di richiesta di pre-generazione del token
Nome | Descrizione | Versione minima dell'evento di trigger |
---|---|---|
userAttributes |
Attributi del profilo utente nel pool di utenti. |
1 |
groupConfiguration |
L'oggetto di input contenente l'attuale configurazione del gruppo. L'oggetto include |
1 |
groupsToOverride |
I gruppi di pool di utenti di cui l'utente fa parte. |
1 |
iamRolesToSostituisci |
È possibile associare un gruppo di pool di utenti a un ruolo AWS Identity and Access Management (IAM). Questo elemento è un elenco di tutti i ruoli IAM dei gruppi di cui l'utente è membro. |
1 |
preferredRole |
Puoi impostare una precedenza per i gruppi di pool di utenti. Questo elemento contiene il nome del ruolo IAM del gruppo con la precedenza più alta nell'elemento |
1 |
clientMetadata |
Una o più coppie chiave-valore che è possibile specificare e fornire come input personalizzato alla funzione Lambda per il trigger di pre-generazione del token. Per passare questi dati alla funzione Lambda, usa il ClientMetadata parametro nelle operazioni AdminRespondToAuthChallengee RespondToAuthChallengeAPI. Amazon Cognito non include i dati del |
1 |
ambiti |
Ambiti OAuth 2.0 dell'utente. Gli ambiti presenti in un token di accesso sono gli ambiti standard e personalizzati del pool di utenti richiesti dall'utente e che il client dell'app è autorizzato a emettere. |
2 |
Parametri di risposta di pre-generazione del token
Nome | Descrizione | Versione minima dell'evento di trigger |
---|---|---|
claimsOverrideDetails | Un container per tutti gli elementi di un evento trigger V1_0 . |
1 |
claimsAndScopeOverrideDetails |
Un container per tutti gli elementi di un evento trigger |
2 |
idTokenGeneration |
Le attestazioni che desideri sostituire, aggiungere o sopprimere nel token di identità dell'utente. Questo elemento padre ai valori di personalizzazione del token ID viene visualizzato solo negli eventi della versione 2, ma gli elementi secondari vengono visualizzati negli eventi della versione 1. |
2 |
accessTokenGeneration |
Le attestazioni e gli ambiti che desideri sostituire, aggiungere o sopprimere nel token di accesso dell'utente. Questo elemento padre per accedere ai valori di personalizzazione del token viene visualizzato solo negli eventi della versione 2. |
2 |
claimsToAddOrOverride |
Una mappa di una o più attestazioni e dei relativi valori che desideri aggiungere o modificare. Per attestazioni relative ai gruppi, utilizza invece Negli eventi della versione 2, questo elemento viene visualizzato sotto |
1 * |
claimsToSuppress |
Un elenco delle attestazioni che desideri vengano soppresse da Amazon Cognito. Se la tua funzione sopprime e sostituisce un valore di attestazione, Amazon Cognito sopprime l'attestazione. Negli eventi della versione 2, questo elemento viene visualizzato sotto |
1 |
groupOverrideDetails |
L'oggetto di output contenente l'attuale configurazione di gruppo. L'oggetto include La funzione sostituisce l'oggetto Amazon Cognito ID e i token di accesso contengono entrambi i token reclamo |
1 |
scopesToAdd |
Un elenco di ambiti OAuth 2.0 che desideri aggiungere all'attestazione |
2 |
scopesToSuppress |
Un elenco di ambiti OAuth 2.0 che desideri rimuovere dall'attestazione |
2 |
* Gli oggetti di risposta agli eventi della versione 1 possono restituire stringhe. Gli oggetti di risposta agli eventi della versione 2 possono restituire oggetti complessi.
Esempio della versione due dell'evento trigger pre-token: aggiunta ed eliminazione di richieste, ambiti e gruppi
Questo esempio apporta le seguenti modifiche ai token di un utente.
-
Imposta i
family_name
valori comeDoe
nel token ID. -
Impedisce la visualizzazione delle richieste
email
ephone_number
nel token ID. -
Imposta la richiesta
cognito:roles
del token ID su"arn:aws:iam::123456789012:role\/sns_callerA","arn:aws:iam::123456789012:role\/sns_callerC","arn:aws:iam::123456789012:role\/sns_callerB"
. -
Imposta la richiesta
cognito:preferred_role
del token ID suarn:aws:iam::123456789012:role/sns_caller
. -
Aggiunge gli ambiti
openid
,email
esolar-system-data/asteroids.add
al token di accesso. -
Elimina l'ambito
phone_number
eaws.cognito.signin.user.admin
dal token di accesso. La rimozione diphone_number
impedisce il recupero del numero di telefono dell'utente dauserInfo
. La rimozione diaws.cognito.signin.user.admin
impedisce alle richieste API da parte dell'utente di leggere e modificare il proprio profilo con l'API dei pool di utenti di Amazon Cognito.Nota
La rimozione di
phone_number
dagli ambiti impedisce solo il recupero del numero di telefono di un utente se gli ambiti rimanenti nel token di accesso includonoopenid
e almeno un altro ambito standard. Per ulteriori informazioni, consulta Informazioni sugli ambiti. -
Imposta la richiesta
cognito:groups
del token ID e di accesso su"new-group-A","new-group-B","new-group-C"
.
Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per questo esempio di codice:
Evento precedente alla generazione di token (versione due): aggiungere attestazioni con oggetti complessi
Questo esempio apporta le seguenti modifiche ai token di un utente.
-
Aggiunge rivendicazioni di tipo number, string, booleano e JSON al token ID. Questa è l'unica modifica che gli eventi di attivazione della versione due rendono disponibile al token ID.
-
Aggiunge rivendicazioni di tipo number, string, boolean e JSON al token di accesso.
-
Aggiunge tre ambiti al token di accesso.
-
Elimina le
sub
affermazioniemail
e nell'ID e nei token di accesso. -
Sopprime l'
aws.cognito.signin.user.admin
ambito nel token di accesso.
Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per questo esempio di codice:
Esempio di evento versione 1 di generazione del pre-token: aggiunta di una nuova richiesta ed eliminazione di una richiesta esistente
Questo esempio usa un evento trigger versione 1 con una funzione Lambda di pre-generazione di token per aggiungere una nuova attestazione ed eliminarne una esistente.
Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per il codice di esempio. Dal momento che il codice di esempio non elabora i parametri di richiesta, puoi utilizzare un evento di test con una richiesta vuota. Per ulteriori informazioni sui parametri di richiesta comuni, consulta Evento trigger Lambda per il bacino d'utenza.
Esempio di evento versione 1 di generazione del pre-token: modifica dell'appartenenza al gruppo dell'utente
Questo esempio usa un evento trigger versione 1 con una funzione Lambda di pre-generazione di token per modificare l'appartenenza ai gruppi dell'utente.
Amazon Cognito trasferisce informazioni sugli eventi alla funzione Lambda. La funzione quindi restituisce a Amazon Cognito lo stesso oggetto evento con eventuali modifiche nella risposta. Nella console Lambda puoi configurare un evento di test con i dati pertinenti al trigger Lambda. Di seguito è riportato un evento di test per questo esempio di codice: