Fuente: Post
En una entrada anterior contaba un poco sobre que es AWS Cognito Link, he estado realizando muchas pruebas con nuevas funcionalidades e identificando las posibilidades que tenemos para integrarla con nuestras aplicaciones.
He decidido armar una serie de artículos con distintas configuraciones e integraciones para entender en profundidad este servicio de AWS, y como siempre es mejor empezar por el principio.
Vamos a Desplegar AWS Cognito + una aplicación Cliente utilizando Terraform, Aquí Link dejaré el repositorio con el código, recuerda cambiar el nombre de los buckets y las aplicaciones.
Estructura del repositorio:
cognito.tf – Main Cognito resources configuration
config.tf – Terraform backend configuration
variables.tf – Input variables definition
maint.tf – AWS provider configuration
terraform.tfvars – Variable values for deployment
El “User pool”
Para definir el user pool utilizamos el recurso "aws_cognito_user_pool"
de Terraform, importante definir los atributos del usuario (recordar que Cognito tiene unos atributos predefinidos) y los atributos custom que se configura con un esquema más, tenemos hasta 50 atributos custom para agregar. Ref
# 1. User Pool
resource "aws_cognito_user_pool" "this" {
name = "olcb-community-user-pool"
username_attributes = ["email"]
auto_verified_attributes = ["email"]
admin_create_user_config {
allow_admin_create_user_only = false
}
# Configuraciones del password
password_policy {
minimum_length = 8
require_lowercase = true
require_uppercase = true
require_numbers = true
require_symbols = false
}
# habilitar attributo predefinido
schema {
name = "email"
attribute_data_type = "String"
required = true
mutable = true
}
# Atrributo custom
schema {
name = "custom_attr"
attribute_data_type = "Number"
required = false
mutable = true
number_attribute_constraints {
min_value = 1
max_value = 100
}
}
}
Esta parte del código crea nuestro User Pool
Una vez configurado el User Pool necesitamos crear una aplicación Cliente que Sirva de integración con las aplicaciones externas que se conectaran a través de Cognito.
La “App Cliente”
La aplicación cliente la desplegamos utilizando el recurso "aws_cognito_user_pool_client"
, los parámetros más importantes son la referencia al User Pool que creamos en el paso anterior, user_pool_id,
los flujos que aceptaremos allowed_auth_flows
y el proveedor de los que tengamos en Cognito que soportará esta aplicación supported_identity_providers
# 2. App Client
resource "aws_cognito_user_pool_client" "this" {
name = "olcb-app-client"
user_pool_id = aws_cognito_user_pool.this.id
generate_secret = false
allowed_oauth_flows_user_pool_client = true
allowed_oauth_flows = ["code", "implicit"]
allowed_oauth_scopes = ["email", "openid", "profile"]
explicit_auth_flows = ["ADMIN_NO_SRP_AUTH", "USER_PASSWORD_AUTH"]
callback_urls = ["https://example.com/callback"]
logout_urls = ["https://example.com/logout"]
supported_identity_providers = ["COGNITO"]
refresh_token_validity = 30
}
Este recurso generará la aplicación dentro de nuestro Cognito user pool
El “User Pool Domain”
Finalmente, asignamos un dominio para que nuestras URLs de login y alta de usuarios y LogOut:
# 3. User Pool Domain
resource "aws_cognito_user_pool_domain" "this" {
domain = "olcb-app-domain"
user_pool_id = aws_cognito_user_pool.this.id
}
En el apartado domain de nuestro Cognito User Pool tendremos la URI que hemos definido en el Terraform.
Pantalla de Login
Finalmente, tendremos operativo nuestro Cognito con un login “UI Clásico”, y el dominio que hemos configurado.
En siguientes entrada mostraré como es el circuito de alta de usuario, conexión desde una app en Python y varias características más,
gracias por leer, Saludos
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.