https://d226lax1qjow5r.cloudfront.net/blog/blogposts/number-verification-in-python-with-aws-lambda-and-vonage/Blog_Microservice_Lambda_1200x600.png

Verificación de números en Python con AWS Lambda y Vonage

Publicado el May 5, 2021

Tiempo de lectura: 9 minutos

En este artículo, implementará un Vonage Verify 2FA client como microservicio en AWS Lambdaescrito en Python. Lo harás utilizando esta aplicación Python disponible en Github que utiliza Flasky sin servidor.

La autenticación multifactor, también conocida como autenticación de dos factores (2FA), está implementada en la mayoría de los servicios web. Ofrece un nivel adicional de seguridad para garantizar que la persona que accede a un servicio es la correcta. El paso añadido en la autenticación envía un código aleatorio mediante SMS a un dispositivo móvil registrado por el usuario. Una vez que el usuario proporciona el código enviado, queda autenticado.

Como ocurre con todas las cosas relacionadas con la seguridad, 2FA no es a prueba de todo. Sin embargo, añade una buena capa de seguridad para ayudar a proteger las cuentas.

Requisitos previos

Vonage API Account

To complete this tutorial, you will need a Vonage API account. If you don’t have one already, you can sign up today and start building with free credit. Once you have an account, you can find your API Key and API Secret at the top of the Vonage API Dashboard.

Instrucciones de instalación

Clonar el archivo nexmo-community/nexmo-verify-lambda-python de GitHub y navegue hasta el directorio recién creado para continuar.

Medio ambiente

Cambie el nombre de .env.default a .env y añada valores a NEXMO_API_KEY y NEXMO_API_SECRET proporcionados por tu cuenta de API de Vonage.

Utilización

Para empezar, cree un virtualenv dentro de la raíz del proyecto para contener el proyecto a medida que avanza. A continuación, activarlo, de la siguiente manera:

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

A continuación, inicialice npm y siga las instrucciones para configurarlo. En la mayoría de los casos, debes seleccionar los valores predeterminados, a menos que desees cambiar alguno de ellos. Además, utiliza npm para instalar algunas dependencias necesarias para el desarrollo para permitir que Serverless y Lambda funcionen con la aplicación Flask. Utiliza los siguientes comandos para completar este paso.

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

Ahora deberías usar pip para instalar las dependencias necesarias de Python desde el directorio requirements.txt incluido en el código clonado.

pip install -r requirements.txt

Running Local

Con la virtualenv configurado, puedes ejecutar la aplicación localmente y probar las cosas antes de implementar en AWS Lambda. Puedes servirla con el siguiente comando:

sls wsgi serve

Por defecto, la ejecución local en su sistema sirve la aplicación en http://localhost:5000. Si pulsa Ctrl+c la cierra al terminar.

Despliegue en Lambda

Con todo lo anterior terminado con éxito, puede utilizar Serverless para desplegar la aplicación en AWS Lambda.

sls deploy

Tras la implantación, recibirá la URL necesaria para acceder a la aplicación a través del API Gateway. Anote la URL para el siguiente paso.

IMPORTANTE: La aplicación de ejemplo, tal cual, no realiza ninguna autenticación ni verificación. Cualquiera con acceso a la URL provista luego de la implementación puede acceder a ella. Hacerlo podría causar cargos inesperados en tu Account de Vonage. Por lo tanto, protege la aplicación si piensas dejarla activa.

Puntos finales disponibles

Hay 4 puntos finales de URL disponibles con este cliente:

  • /

    • No realiza ninguna acción, pero proporciona una forma rápida de probar

  • /request/<to_number>/<brand>

    • Incluyendo 2 argumentos, el cliente solicita un código 2FA enviado al <to_number>que debe incluir el identificador nacional (como 1 para EE.UU.), junto con una <brand> para una identidad más visual en el mensaje SMS.

  • /check/<request_id>/<code>

    • A continuación, puede comprobar un código 2FA pasando los campos <request_id> y el <code> al /check endpoint.

  • /cancel/<request_id>

    • A veces, si se pierde un código 2FA, es necesario cancelar una solicitud. Incluyendo el <request_id> al /cancel se evita la espera de 5 minutos para solicitar un nuevo código.

Ejemplos:

Vaya a la URL proporcionada por el Serverless proceso de despliegue. A continuación se muestran algunos ejemplos de solicitudes de muestra:

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

El punto final / devuelve un mensaje informativo genérico.

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

El punto final /request devuelve el número request_idy el teléfono de to_number debe recibir un texto con el valor code.

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

El endpoint /check devuelve un mensaje de verificación correcta con un valor event_id.

El paso /request paso le concede 5 minutos para seguir con una /check solicitud. Si no puede hacerlo, puede emitir un /cancel con la siguiente URL.

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

Desactivar Virtualenv

Para salir del virtualenvpuede desactivarlo cuando lo desee.

deactivate

Próximos pasos

Si tiene alguna pregunta o se encuentra con problemas, puede ponerse en contacto con @VonageDev en Twitter o consultar en la Comunidad de Vonage en Slack. Buena suerte.

Compartir:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpAntiguos alumnos de Vonage

Adam es un desarrollador y consultor al que le gusta correr a toda velocidad, bloguear y ayudar a otros a domar la tecnología para conseguir cosas increíbles, con un deseo insaciable de servir de mentor y ayudar.