Trigger Lambda del mittente personalizzato - Amazon Cognito

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 del mittente personalizzato

Lambda attiva CustomEmailSender e CustomSMSSender supporta notifiche e-mail e SMS di terze parti nei pool di utenti. Per inviare notifiche agli utenti dall'interno del codice della funzione Lambda, puoi utilizzare i provider di SMS ed e-mail che desideri. Quando Amazon Cognito invia inviti, codici MFA, codici di conferma, codici di verifica e password temporanee agli utenti, gli eventi attivano le funzioni Lambda configurate. Amazon Cognito invia il codice e le password temporanee (segreti) alle funzioni Lambda attivate. Amazon Cognito crittografa questi segreti con una chiave gestita AWS KMS dal cliente e il. AWS Encryption SDK AWS Encryption SDK È una libreria di crittografia lato client che ti aiuta a crittografare e decrittografare dati generici.

CustomEmailSender

Amazon Cognito richiama questo trigger per inviare notifiche e-mail agli utenti.

PersonalizzaSMSSender

Amazon Cognito richiama questo trigger per inviare notifiche SMS agli utenti.

Concetti di crittografia

Amazon Cognito non invia i codici degli utenti in testo semplice negli eventi che invia a trigger mittenti personalizzati. Le funzioni Lambda devono decrittografare i codici negli eventi. I seguenti concetti sono l'architettura di crittografia che la funzione deve utilizzare per ottenere codici da fornire agli utenti.

AWS KMS

AWS KMS è un servizio gestito per creare e controllare AWS KMS chiavi. Queste chiavi crittografano i tuoi dati. Per ulteriori informazioni, consulta la pagina Che cos'è AWS Key Management Service?

Chiave KMS

Una chiave KMS è la rappresentazione logica di una chiave crittografica. La chiave KMS include metadati, ad esempio l'ID della chiave, la data di creazione, la descrizione e lo stato della chiave. La chiave KMS contiene anche il materiale della chiave utilizzato per crittografare e decrittare i dati. Per ulteriori informazioni, consulta AWS Chiavi KMS.

Chiavi KMS simmetriche

Una chiave KMS simmetrica è una chiave di crittografia a 256 bit che non mantiene crittografato AWS KMS . Per utilizzare una chiave KMS simmetrica, è necessario chiamare. AWS KMS Amazon Cognito utilizza le chiavi simmetriche. La stessa chiave viene usata per la crittografia e la decrittografia. Per ulteriori informazioni, consulta Chiavi KMS simmetriche.

Cose da sapere sui trigger Lambda personalizzati per mittenti

  • Per configurare i bacini d'utenza affinché utilizzino questi trigger Lambda, puoi utilizzare la AWS CLI o l'SDK. Queste configurazioni non sono disponibili nella console Amazon Cognito.

    L'UpdateUserPooloperazione imposta la configurazione Lambda. Le richieste di questa operazione richiedono tutti i parametri del pool di utenti e i parametri che si desidera modificare. Se non fornisci tutti i parametri rilevanti, Amazon Cognito imposta i valori di tutti i parametri mancanti sui valori predefiniti. Come dimostrato nell'esempio AWS CLI che segue, includi le voci per tutte le funzioni Lambda che desideri aggiungere o conservare nel tuo pool di utenti. Per ulteriori informazioni, consulta Aggiornamento della configurazione del pool di utenti e del client dell'app.

    #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"

    Per le richieste che utilizzano il corpo JSON del seguente LambdaConfig frammento di UpdateUserPool codice assegna funzioni personalizzate di invio di SMS e e-mail.

    "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" }
  • Per rimuovere un trigger Lambda del mittente personalizzato con update-user-pool AWS CLI un comando, ometti CustomSMSSender il parametro CustomEmailSender o --lambda-config da e includi tutti gli altri trigger che desideri utilizzare con il tuo pool di utenti.

    Per rimuovere un trigger Lambda del mittente personalizzato con una richiesta API UpdateUserPool, ometti il parametro CustomSMSSender o CustomEmailSender dal corpo della richiesta contenente il resto della configurazione del pool di utenti.

  • Amazon Cognito crea una sequenza di escape HTML di caratteri riservati come < (&lt;) e > (&gt;) nella password temporanea dell'utente. Questi caratteri potrebbero essere visualizzati nelle password temporanee inviate da Amazon Cognito alla funzione del mittente e-mail personalizzata, ma non vengono visualizzati nei codici di verifica temporanei. Per inviare password temporanee, la funzione Lambda deve eliminare questi caratteri dopo aver decrittografato la password e prima di inviare il messaggio all'utente.

Attivazione dei trigger Lambda personalizzati del mittente

Per utilizzare una logica personalizzata per inviare SMS o messaggi e-mail per il tuo pool di utenti, configura i trigger mittenti personalizzati. La procedura seguente assegna un trigger SMS personalizzato, un trigger e-mail personalizzato o entrambi al pool di utenti. Dopo aver aggiunto il trigger mittente personalizzato, Amazon Cognito invia sempre gli attributi utente, incluso il numero di telefono, e il codice monouso alla funzione Lambda anziché il comportamento predefinito che invia un SMS o un messaggio e-mail.

  1. Crea una chiave di crittografia simmetrica in (). AWS Key Management Service AWS KMS Amazon Cognito genera segreti (password temporanee, codici di verifica, password monouso di autenticazione e codici di conferma), quindi utilizza questa chiave KMS per crittografare i segreti. AWS Encryption SDK È quindi possibile utilizzare la funzione AWS Encryption SDK in Lambda per decrittografare i segreti e inviarli all'utente in formato testo non crittografato.

  2. Il principale IAM che crea o aggiorna il tuo pool di utenti crea una concessione una tantum per la chiave KMS utilizzata da Amazon Cognito per crittografare il codice. Concedi queste CreateGrant autorizzazioni principali per la tua chiave KMS. Affinché questo esempio di politica chiave KMS sia efficace, l'amministratore che aggiorna il pool di utenti deve accedere con una sessione con un ruolo presunto per il ruolo IAM. arn:aws:iam::111222333444:role/my-example-administrator-role

    Applica la seguente politica basata sulle risorse, modificata per il tuo ambiente, alla tua chiave KMS.

    JSON
    { "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. Crea una funzione Lambda per il trigger del mittente personalizzato. Amazon Cognito utilizza l'SDK di crittografia AWS per crittografare i segreti, le password temporanee e i codici di autorizzazione delle richieste API degli utenti.

    1. Assegna un ruolo di esecuzione Lambda con almeno le autorizzazioni per la kms:Decrypt tua chiave KMS.

    2. Componi il codice della funzione Lambda per inviare i tuoi messaggi. L'evento di input della tua funzione contiene un segreto. Nella tua funzione, decrittografa il segreto con AWS Encryption SDK ed elabora tutti i metadati pertinenti. Quindi invia il codice, il messaggio personalizzato e il numero di telefono di destinazione all'API personalizzata che distribuisce il messaggio.

    3. Aggiungi il AWS Encryption SDK alla tua funzione Lambda. Per ulteriori informazioni, consulta la sezione relativa ai linguaggi di programmazione di SDK di crittografia AWS. Per aggiornare il pacchetto Lambda, completa la procedura seguente.

      1. Esporta la funzione Lambda come file .zip in AWS Management Console.

      2. Apri la tua funzione e aggiungi il AWS Encryption SDK. Per ulteriori informazioni e i link di download, consulta la sezione relative ai linguaggi di programmazione di AWS Encryption SDK nella Guida per gli sviluppatori di AWS Encryption SDK .

      3. Comprimi la funzione con le dipendenze dell'SDK e carica la funzione in Lambda. Per ulteriori informazioni, consulta Distribuzione di funzioni Lambda come archivi di file .zip nella Guida per gli sviluppatori di AWS Lambda .

  4. Concedi l'accesso cognito-idp.amazonaws.com al principale del servizio Amazon Cognito per richiamare la funzione Lambda.

    Il AWS CLI comando seguente concede ad Amazon Cognito l'autorizzazione a richiamare la funzione Lambda:

    aws lambda add-permission --function-name lambda_arn --statement-id "CognitoLambdaInvokeAccess" --action lambda:InvokeFunction --principal cognito-idp.amazonaws.com
  5. Genera una richiesta UpdateUserPoolAPI con un LambdaConfig parametro che aggiunge trigger Lambda del mittente personalizzati. Non puoi aggiungere trigger di questo tipo nella console Amazon Cognito. I trigger mittenti personalizzati richiedono LambdaConfig i parametri di KMSKeyID e CustomSMSSender o CustomEmailSender (o entrambi).