As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Acionador SMS Lambda personalizado do remetente
Quando você atribui um gatilho de SMS remetente personalizado ao seu grupo de usuários, o Amazon Cognito invoca uma função Lambda em vez de seu comportamento padrão quando um evento do usuário exige que ele envie uma mensagem. SMS Com um gatilho de remetente personalizado, sua AWS Lambda função pode enviar SMS notificações aos seus usuários por meio de um método e provedor de sua escolha. O código personalizado da sua função deve processar e entregar todas as SMS mensagens do seu grupo de usuários.
Esse gatilho serve para cenários em que talvez você queira ter maior controle sobre como seu grupo de usuários envia SMS mensagens. Sua função Lambda pode personalizar a chamada para as SNS API operações da Amazon, por exemplo, quando você deseja gerenciar várias originações ou cruzamentos. IDs Regiões da AWS Sua função também pode redirecionar mensagens para outro meio de entrega ou serviço de terceiros.
nota
No momento, não é possível atribuir acionadores de remetente personalizados no console do Amazon Cognito. Você pode atribuir um gatilho com o LambdaConfig
parâmetro em uma UpdateUserPool
API solicitação CreateUserPool
or.
Para configurar esse acionador, execute as seguintes etapas:
-
Crie uma chave de criptografia simétrica em AWS Key Management Service (AWS KMS). O Amazon Cognito gera segredos — senhas temporárias, códigos de verificação e códigos de confirmação — e usa essa chave para criptografar os segredos. KMS Em seguida, você pode usar a API operação Decrypt em sua função Lambda para descriptografar os segredos e enviá-los ao usuário em texto simples. AWS Encryption SDKÉ uma ferramenta útil para AWS KMS operações em sua função.
-
Crie uma função do Lambda que você deseja atribuir como acionador de remetente personalizado. Conceda
kms:Decrypt
permissões para sua KMS chave para a função Lambda. -
Conceda à entidade principal
cognito-idp.amazonaws.com
do serviço do Amazon Cognito acesso para invocar a função do Lambda. -
Escreva um código da função do Lambda que direcione suas mensagens para métodos de entrega personalizados ou provedores de terceiros. Para entregar o código de verificação ou confirmação do usuário, o Base64 decodifica e descriptografa o valor do parâmetro
code
na solicitação. Essa operação produz um código ou senha em texto simples que você deve incluir na mensagem. -
Atualize o grupo de usuários para que ele use um acionador do Lambda de remetente personalizado. O IAM diretor que atualiza ou cria um grupo de usuários com um gatilho de remetente personalizado deve ter permissão para criar uma concessão para sua KMS chave. O
LambdaConfig
trecho a seguir atribui funções personalizadas SMS e de remetente de e-mail."LambdaConfig": { "KMSKeyID": "arn:aws:kms:
us-east-1
:123456789012
:key/a6c4f8e2-0c45-47db-925f-87854bc9e357
", "CustomEmailSender": { "LambdaArn": "arn:aws:lambda:us-east-1
:123456789012
:function:MyFunction
", "LambdaVersion": "V1_0" }, "CustomSMSSender": { "LambdaArn": "arn:aws:lambda:us-east-1
:123456789012
:function:MyFunction
", "LambdaVersion": "V1_0" }
Parâmetros de SMS gatilho Lambda personalizados do remetente
A solicitação que o Amazon Cognito transmite para essa função do Lambda é uma combinação dos parâmetros abaixo e dos parâmetros comuns que o Amazon Cognito adiciona a todas as solicitações.
Parâmetros personalizados SMS de solicitação do remetente
- tipo
-
A versão da solicitação. Para um evento de SMS remetente personalizado, o valor dessa string é sempre
customSMSSenderRequestV1
. - Código
-
O código criptografado que sua função pode descriptografar e enviar ao usuário.
- clientMetadata
-
Um ou mais pares de valores-chave que você pode fornecer como entrada personalizada para o gatilho da função Lambda do SMS remetente personalizado. Para passar esses dados para sua função Lambda, você pode usar o ClientMetadata parâmetro nas ações AdminRespondToAuthChallengee. RespondToAuthChallengeAPI O Amazon Cognito não inclui dados do ClientMetadata parâmetro AdminInitiateAuthe InitiateAuthAPIoperações na solicitação que ele passa para a função de pós-autenticação.
- userAttributes
-
Um ou mais pares de chave-valor que representam atributos de usuário.
Parâmetros personalizados SMS de resposta do remetente
O Amazon Cognito não espera nenhuma outra informação de retorno na resposta. Sua função pode usar API operações para consultar e modificar seus recursos ou registrar metadados de eventos em um sistema externo.
Ativando o gatilho SMS Lambda personalizado do remetente
Você pode configurar um gatilho de SMS remetente personalizado que usa lógica personalizada para enviar SMS mensagens para seu grupo de usuários. O procedimento a seguir atribui um SMS gatilho personalizado, um gatilho de e-mail personalizado ou ambos ao seu grupo de usuários. Depois de adicionar seu gatilho de SMS remetente personalizado, o Amazon Cognito sempre envia atributos do usuário, incluindo o número de telefone e o código único para sua função Lambda, em vez do comportamento padrão que envia uma SMS mensagem com o Amazon Simple Notification Service.
Importante
Amazon Cognito HTML - escapa caracteres reservados como <
(<
) e >
(>
) na senha temporária do seu usuário. Esses caracteres podem aparecer em senhas temporárias que o Amazon Cognito envia para à função personalizada de remetente de e-mail, mas não aparecem nos códigos de verificação temporários. Para enviar senhas temporárias, a função do Lambda deve liberar esses caracteres depois de decifrar a senha e antes de enviar a mensagem ao usuário.
-
Crie uma chave de criptografia no AWS KMS. Essa chave criptografa senhas temporárias e códigos de autorização gerados pelo Amazon Cognito. Depois, é possível descriptografar esses segredos na função do Lambda de remetente personalizado para enviá-los ao usuário em texto não criptografado.
-
Conceda
cognito-idp.amazonaws.com
acesso principal ao serviço Amazon Cognito para criptografar códigos com a chave. KMSAplique a seguinte política baseada em recursos à sua KMS chave.
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "cognito-idp.amazonaws.com" }, "Action": "kms:CreateGrant", "Resource": "arn:aws:kms:
us-west-2
:111222333444
:key/1example-2222-3333-4444-999example
", "Condition": { "StringEquals": { "aws:SourceAccount": "111222333444
" }, "ArnLike": { "aws:SourceArn": "arn:aws:cognito-idp:us-west-2
:111222333444
:userpool/us-east-1_EXAMPLE
" } } }] } -
Crie uma função do Lambda para o acionador de remetente personalizado. O Amazon Cognito usa a AWS criptografia SDK para criptografar os segredos, as senhas temporárias e os códigos que autorizam as solicitações dos seus usuários. API
-
Atribua uma IAM função à sua função Lambda que tenha, no mínimo,
kms:Decrypt
permissões para sua KMS chave.
-
-
Conceda à entidade principal
cognito-idp.amazonaws.com
do serviço do Amazon Cognito acesso para invocar a função do Lambda.O AWS CLI comando a seguir concede ao Amazon Cognito permissão para invocar sua função Lambda:
aws lambda add-permission --function-name
lambda_arn
--statement-id "CognitoLambdaInvokeAccess
" --action lambda:InvokeFunction --principal cognito-idp.amazonaws.com -
Componha o código da função do Lambda para enviar as mensagens. O Amazon Cognito usa para AWS Encryption SDK criptografar segredos antes que o Amazon Cognito envie os segredos para a função Lambda personalizada do remetente. Em sua função, decifre o segredo e processe todos os metadados relevantes. Em seguida, envie o código, sua própria mensagem personalizada e o número de telefone de destino para a API pessoa que entrega sua mensagem.
-
Adicione o AWS Encryption SDK à sua função Lambda. Para obter mais informações, consulte SDKLinguagens AWS de programação de criptografia. Para atualizar o pacote do Lambda, conclua as etapas a seguir.
-
Exporte a função do Lambda como um arquivo .zip no AWS Management Console.
-
Abra sua função e adicione AWS Encryption SDK o. Para ter mais informações e links de download, consulte Linguagens de programação do AWS Encryption SDK no Guia do desenvolvedor do AWS Encryption SDK .
-
Compacte sua função com suas SDK dependências e faça o upload da função para o Lambda. Para obter mais informações, consulte Implantar funções do Lambda como arquivos .zip no Guia do desenvolvedor do AWS Lambda .
-
-
Atualize o grupo de usuários para adicionar acionadores do Lambda de remetente personalizado. Inclua um
CustomEmailSender
parâmetroCustomSMSSender
or em umaUpdateUserPool
API solicitação. AUpdateUserPool
API operação requer todos os parâmetros do seu grupo de usuários e os parâmetros que você deseja alterar. Se você não fornecer todos os parâmetros relevantes, o Amazon Cognito assumirá os valores padrão para todos os parâmetros ausentes. Conforme demonstrado no exemplo a seguir, inclua entradas para todas as funções do Lambda que você deseja adicionar ou manter no grupo de usuários. Para obter mais informações, consulte Atualização da configuração do pool de usuários e do cliente do aplicativo.#Send this parameter in an 'aws cognito-idp update-user-pool' CLI command, including any existing #user pool configurations. --lambda-config "PreSignUp=
lambda-arn
, \ CustomSMSSender={LambdaVersion=V1_0,LambdaArn=lambda-arn
}, \ CustomEmailSender={LambdaVersion=V1_0,LambdaArn=lambda-arn
}, \ KMSKeyID=key-id
"
Para remover um gatilho Lambda personalizado do remetente com update-user-pool
AWS CLI um, omita CustomSMSSender
o parâmetro CustomEmailSender
--lambda-config
or e inclua todos os outros gatilhos que você deseja usar com seu grupo de usuários.
Para remover um gatilho Lambda personalizado do remetente com UpdateUserPool
API uma solicitação, omita CustomSMSSender
o parâmetro CustomEmailSender
or do corpo da solicitação que contém o restante da configuração do seu grupo de usuários.
Exemplo de código
O exemplo de Node.js a seguir processa um evento de SMS mensagem na função Lambda personalizada do SMS remetente. Esse exemplo pressupõe que a função tenha duas variáveis de ambiente definidas.
KEY_ALIAS
-
O alias da KMS chave que você deseja usar para criptografar e descriptografar os códigos dos seus usuários.
KEY_ARN
-
O Amazon Resource Name (ARN) da KMS chave que você deseja usar para criptografar e descriptografar os códigos dos seus usuários.
const AWS = require('aws-sdk'); const b64 = require('base64-js'); const encryptionSdk = require('@aws-crypto/client-node'); //Configure the encryption SDK client with the KMS key from the environment variables. const { encrypt, decrypt } = encryptionSdk.buildClient(encryptionSdk.CommitmentPolicy.REQUIRE_ENCRYPT_ALLOW_DECRYPT); const generatorKeyId = process.env.KEY_ALIAS; const keyIds = [ process.env.KEY_ARN ]; const keyring = new encryptionSdk.KmsKeyringNode({ generatorKeyId, keyIds }) exports.handler = async (event) => { //Decrypt the secret code using encryption SDK. let plainTextCode; if(event.request.code){ const { plaintext, messageHeader } = await decrypt(keyring, b64.toByteArray(event.request.code)); plainTextCode = plaintext } //PlainTextCode now contains the decrypted secret. if(event.triggerSource == 'CustomSMSSender_SignUp'){ //Send an SMS message to your user via a custom provider. //Include the temporary password in the message. } else if(event.triggerSource == 'CustomSMSSender_ResendCode'){ } else if(event.triggerSource == 'CustomSMSSender_ForgotPassword'){ } else if(event.triggerSource == 'CustomSMSSender_UpdateUserAttribute'){ } else if(event.triggerSource == 'CustomSMSSender_VerifyUserAttribute'){ } else if(event.triggerSource == 'CustomSMSSender_AdminCreateUser'){ } else if(event.triggerSource == 'CustomSMSSender_AccountTakeOverNotification'){ } return; };
Tópicos
Avalie os recursos de SMS mensagens com uma função de SMS remetente personalizada
Uma função Lambda de SMS remetente personalizada aceita SMS as mensagens que seu grupo de usuários enviaria, e a função entrega o conteúdo com base em sua lógica personalizada. O Amazon Cognito envia o Parâmetros de SMS gatilho Lambda personalizados do remetente para sua função. Sua função pode fazer o que você quiser com essas informações. Por exemplo, você pode enviar o código para um tópico do Amazon Simple Notification Service (AmazonSNS). Um assinante do Amazon SNS Topic pode ser uma SMS mensagem, um HTTPS endpoint ou um endereço de e-mail.
Para criar um ambiente de teste para SMS mensagens do Amazon Cognito com uma função Lambda personalizada do SMS remetente, amazon-cognito-user-poolconsulte development-and-testing-with - sms-redirected-to-email - na biblioteca aws-samples
Quando você implanta essa solução em um grupo de usuários, todas as mensagens que o Amazon Cognito geralmente envia por meio de SMS mensagens, a função Lambda envia para um endereço de e-mail central. Use essa solução para personalizar e visualizar SMS mensagens e testar os eventos do grupo de usuários que fazem com que o Amazon Cognito envie uma SMS mensagem. Depois de concluir seus testes, reverta a CloudFormation pilha ou remova a atribuição personalizada da função de SMS remetente do seu grupo de usuários.
Importante
Não use os modelos em amazon-cognito-user-pool- development-and-testing-with - sms-redirected-to-email
Fontes personalizadas de SMS gatilho Lambda do remetente
A tabela a seguir mostra o evento de acionamento para fontes de SMS gatilho personalizadas em seu código Lambda.
TriggerSource value |
Evento |
---|---|
CustomSMSSender_SignUp |
Um usuário se cadastra e o Amazon Cognito envia uma mensagem de boas-vindas. |
CustomSMSSender_ForgotPassword |
Um usuário solicita um código para redefinir a senha. |
CustomSMSSender_ResendCode |
Um usuário solicita um novo código para confirmar seu registro. |
CustomSMSSender_VerifyUserAttribute |
Um usuário cria um endereço de e-mail ou um atributo de número de telefone e o Amazon Cognito envia um código para verificar o atributo. |
CustomSMSSender_UpdateUserAttribute |
Um usuário atualiza um endereço de e-mail ou um atributo de número de telefone e o Amazon Cognito envia um código para verificar o atributo. |
CustomSMSSender_Authentication |
Um usuário configurado com autenticação SMS multifator (MFA) faz login. |
CustomSMSSender_AdminCreateUser |
Você cria um usuário em seu grupo de usuários e o Amazon Cognito envia uma senha temporária. |