🔑AWS Cognito + ⚡ Lambda triggers

4 min de lectura Ver original en Hashnode
Compartir:

AWS Cognito es un servicio de autenticacin, autorizacin y gestin de usuarios, ofrecido Amazon complement administrado, facilitando la integracin con aplicaciones Web y Mviles, permitiendo incluso conectarse con distintos IDP (Identity Provider) y login social, entre otros. AWS Cognito es compatible con Open ID Connect ( OIDC), OAuth 2.0, SAML 2.0, JSON Web Tokens (JWT).

Algunas de las caracteristicas que ofrece AWS Cognito no son 100% customizables, como es el caso del UI (las pantallas de Sing In, Sing Up, recuperar contrasea) entre otras, no obstante en las ltimas ediciones de los AWS re:invent ha recibido varias actualizaciones y mejoras en las caractersticas que ofrece el servicio.

En este caso, sin embargo, vamos a ver con un ejemplo, una caracterstica interesante que permite extender los flujos existentes y agregar nuevos workflows de trabajo a AWS cognito con lambda triggers.

Desplegando AWS cognito

Debido a la dependencia del Stack del Cognito con las Lambdas que se ejecutaran antes eventos, necesitamos dos despliegues para identificar los arn de las lambas y el Cognito, luego de esto agregamos la referencias al Cognito de las lambas y a las lambdas los permisos del Cognito como muestro a continuacin

El AWS cognito que desplegamos para este ejemplo tiene una aplicacion que ademas permite hacer pruebas con Postman, a continuacion la configuracion que pueden encontrar completa en el repositorio que acompaa este post: Repositorio con el cdigo fuente

...Resources: # Create a Cognito User pool for user management OlcortesbUserPool: Type: AWS::Cognito::UserPool Properties: Policies: PasswordPolicy: MinimumLength: 8 AutoVerifiedAttributes: - email UsernameAttributes: - email...

Agregando las lambdas al cognito

En el cdigo inicial que subir al repositorio las lneas de LambdaConfig estarn comentaras, agregue los ARN de las lambas que contienen la lgica de los eventos que se describen. PresigUp y PostConfirmation

Resources: # Create a Cognito User pool for user management OlcortesbUserPool: Type: AWS::Cognito::UserPool Properties: Policies: PasswordPolicy: MinimumLength: 8 AutoVerifiedAttributes: - email UsernameAttributes: - email # LambdaConfig: # PreSignUp: arn:aws:lambda:eu-central-1:{account}:function:{name} # 3. Create an application for authentication # PostConfirmation: arn:aws:lambda:eu-central-1:{account}:function:{name}

Las posibles lambdas que podemos disparar los encontramos en la documentacin

 PostAuthentication: String PostConfirmation: String PreAuthentication: String PreSignUp: String PreTokenGeneration: String PreTokenGenerationConfig:

Probando la configuracin bsica

La primera lambda, la PreSing, se lanza al momento de darse de alta en la plataforma,

En el Log que muestro a continuacin, corresponde al Log de la landa indicando que un usuario est intentando darse de alta

cognito enva un cdigo al correo para validarlo:

Al momento de colocar el cdigo correcto se dispara la siguiente lambda y el usuario est finalmente creado

Se puede observar el usuario validado

Descripcin del Cdigo

El cdigo del presente ejemplo est subido a este repositorio:

aws-cognito-lambda-triggers/ app/ # Application Lambda function app.js # Simple handler that returns the event postconfirmation/ # Post-confirmation Lambda trigger postConfirmation.mjs # Handler for post-confirmation events presignup/ # Pre-signup Lambda trigger preSignUp.mjs # Handler for pre-signup events .gitignore # Git ignore file cognito.yaml # Cognito resources CloudFormation template README.md # Project documentation samconfig.toml # SAM CLI configuration sample.samconfig.toml # Sample SAM configuration template.yaml # Main CloudFormation template

Conclusiones

Se despleg un cognito con dos lambdas triggers configuradas

S probo el flujo de Sign Up de un usuario validando los puntos importantes en el proceso de alga

Dentro de estas lambdas se puede agregar la lgica que los flujos que estamos trabajando necesiten, agregando validaciones, funcionalidades, actualizacin de campos de usuario y dems caractersticas que permite la versatilidad de AWS Lambda

El cdigo de las lambdas est solo de ejemplo para entender el comportamiento, se puede agregar el cdigo que se desee como se deja explicado en el rearme con ejemplos.

Referencias

https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-working-with-lambda-triggers.html

https://docs.aws.amazon.com/cognito/latest/developerguide/user-pool-lambda-post-authentication.html

https://github.com/olcortesb/aws-cognito-lambda-triggers


Artículo original: 🔑AWS Cognito + ⚡ Lambda triggers