https://a.storyblok.com/f/270183/10735/350b35d9b7/blog_microservice_lambda_1200x600.png

Verificação de números em Python com AWS Lambda e Vonage

Publicado em May 5, 2021

Tempo de leitura: 9 minutos

Nesta postagem, você vai implantar um Vonage Verify 2FA client como um microsserviço no AWS Lambda, escrito em Python. Para isso, você usará este aplicativo em Python disponível no GitHub que utiliza Flaske Serverless.

A autenticação multifatorial, também conhecida como Autenticação de Dois Fatores (2FA), é implementada na maioria dos serviços da web. Ela oferece um nível extra de segurança para garantir que a pessoa que está acessando um serviço seja realmente quem diz ser. A etapa adicional na autenticação consiste no envio de um código aleatório por SMS para um dispositivo móvel registrado pelo usuário. Assim que o usuário fornece o código enviado, ele é autenticado.

Como tudo o que diz respeito à segurança, a autenticação de dois fatores (2FA) não é infalível. No entanto, ela acrescenta uma boa camada de segurança para ajudar a proteger as contas.

Pré-requisitos

Instruções de configuração

Clone o nexmo-community/nexmo-verify-lambda-python do GitHub e acesse o diretório recém-criado para continuar.

Meio ambiente

Renomear .env.default para .env e adicione valores a NEXMO_API_KEY e NEXMO_API_SECRET fornecidos pela sua conta de APIs da Vonage.

Uso

Para começar, crie um virtualenv na raiz do projeto para abrigar o projeto à medida que você avança. Em seguida, ative-o da seguinte maneira:

virtualenv venv --python=python3 source venv/bin/activate

Em seguida, inicialize npm e siga as instruções para configurá-lo. Na maioria dos casos, você deve selecionar as opções padrão, a menos que queira alterar alguma delas. Além disso, use o npm para instalar algumas dependências necessárias para o desenvolvimento, a fim de permitir que o Serverless e o Lambda funcionem com o aplicativo Flask. Use os comandos a seguir para concluir esta etapa.

npm init npm install --save-dev serverless-wsgi serverless-python-requirements

Agora você deve usar pip para instalar as dependências necessárias do Python a partir do requirements.txt incluídas no código clonado.

pip install -r requirements.txt

Corrida local

Com a virtualenv configuração pronta, você pode executar o aplicativo localmente e testá-lo antes de implantá-lo no AWS Lambda. Você pode executá-lo com o seguinte comando:

sls wsgi serve

Por padrão, ao executar o aplicativo localmente no seu sistema, ele fica disponível em http://localhost:5000. Ao clicar em Ctrl+c fecha o aplicativo assim que você terminar.

Implantar no Lambda

Depois de concluir com sucesso todas as etapas acima, você pode usar Serverless para implantar o aplicativo no AWS Lambda.

sls deploy

Após a implantação, você receberá a URL necessária para acessar o aplicativo por meio do API Gateway. Anote a URL para a próxima etapa.

IMPORTANTE: O aplicativo de exemplo, da forma como está, não realiza nenhuma autenticação ou verificação. Qualquer pessoa com acesso à URL fornecida após a implantação poderá acessá-lo. Isso pode gerar cobranças inesperadas no seu Account da Vonage. Portanto, proteja o aplicativo se pretender mantê-lo ativo.

Pontos de extremidade disponíveis

Existem 4 pontos de extremidade de URL disponíveis neste cliente:

  • /

    • Não executa nenhuma ação, mas oferece uma maneira rápida de testar

  • /request/<to_number>/<brand>

    • Ao incluir dois argumentos, o cliente solicita que um código de autenticação de duas etapas (2FA) seja enviado para o <to_number>, que deve incluir o identificador nacional (como 1 para os EUA), juntamente com uma <brand> sequência de caracteres para maior identificação visual na mensagem SMS.

  • /check/<request_id>/<code>

    • Você pode, então, verificar um código de autenticação de duas etapas (2FA) passando o <request_id> e o <code> para o /check ponto de extremidade.

  • /cancel/<request_id>

    • Às vezes, se um código de autenticação de duas etapas (2FA) for perdido, é necessário cancelar uma solicitação. Ao incluir o <request_id> no /cancel endpoint, você evita a espera de 5 minutos para solicitar um novo código.

Exemplos:

Acesse a URL fornecida pelo Serverless processo de implantação. Veja abaixo alguns exemplos de como essas solicitações podem ser:

https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/

O / ponto de extremidade retorna uma mensagem informativa genérica.

https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/request/15554443333/Vonage

O /request endpoint retorna o request_id, e o número de telefone to_number deve receber uma mensagem de texto com um code.

https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/check/9807adsf0sae89fu0se87r0sf/654321

O /check endpoint retorna uma mensagem de verificação bem-sucedida com um event_id.

A /request etapa concede a você 5 minutos para dar continuidade a uma /check solicitação. Caso não consiga fazer isso, você pode enviar uma /cancel usando a seguinte URL.

https://7ulasfasdasdfw4.execute-api.us-east-1.amazonaws.com/dev/cancel/9807adsf0sae89fu0se87r0sf

Desativando o Virtualenv

Para sair do virtualenv, você pode desativá-lo quando quiser.

deactivate

Próximos passos

Se você tiver alguma dúvida ou encontrar algum problema, entre em contato com @VonageDev no Twitter ou fazer sua pergunta na Comunidade Vonage no Slack. Boa sorte.

Compartilhar:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpEx-funcionários da Vonage

Adam é um desenvolvedor e consultor que gosta de corridas de ultramaratona, escrever em blogs e gravar vlogs, além de ajudar outras pessoas a dominar a tecnologia para realizar coisas incríveis, movido por um desejo insaciável de orientar e ajudar.