Skip to content

Latest commit

 

History

History
245 lines (170 loc) · 5.94 KB

File metadata and controls

245 lines (170 loc) · 5.94 KB

🔧 Guía de Configuración AWS Cognito

Paso 1: Crear User Pool en AWS Cognito

1.1 Acceder a AWS Console

  1. Ve a AWS Console
  2. Busca "Cognito" en la barra de búsqueda
  3. Selecciona "Amazon Cognito"

1.2 Crear User Pool

  1. Haz clic en "Create user pool"
  2. Step 1: Configure sign-in experience
    • Cognito user pool sign-in options: Selecciona "Username"
    • Username requirements: Marca "Allow username changes"
    • Click "Next"

1.3 Configurar Políticas de Contraseña

  1. Step 2: Configure security requirements
    • Password policy: Selecciona "Cognito defaults" o "Custom"
    • Si seleccionas "Custom":
      • Minimum length: 8
      • Require uppercase letters: ✅
      • Require lowercase letters: ✅
      • Require numbers: ✅
      • Require special characters: ✅ (opcional)
    • Multi-factor authentication: Selecciona "Optional"
    • MFA methods: Marca "Software token MFA (TOTP)"
    • Click "Next"

1.4 Configurar Atributos

  1. Step 3: Configure sign-up experience
    • Required attributes: Marca "Email"
    • Email: Marca "Allow email addresses"
    • Email verification: Marca "Required"
    • Click "Next"

1.5 Configurar Mensajes

  1. Step 4: Configure message delivery
    • Email provider: Selecciona "Send email with Cognito"
    • From email address: Selecciona "Cognito default"
    • Click "Next"

1.6 Configurar Integraciones (Opcional)

  1. Step 5: Integrate your app
    • Puedes saltarte este paso por ahora
    • Click "Next"

1.7 Revisar y Crear

  1. Step 6: Review and create
    • Revisa la configuración
    • Click "Create user pool"

Paso 2: Crear App Client

2.1 Crear App Client

  1. En tu User Pool, ve a la pestaña "App integration"
  2. En "App clients and analytics", haz clic en "Create app client"
  3. Step 1: Configure app client
    • App client name: "cognito-auth-client"
    • Public client: ✅ (marca esta opción)
    • Click "Next"

2.2 Configurar Authentication Flows

  1. Step 2: Configure authentication flows
    • Authentication flows: Marca "USER_PASSWORD_AUTH"
    • OAuth flows: Puedes dejarlo sin marcar por ahora
    • Click "Next"

2.3 Revisar y Crear

  1. Step 3: Review and create
    • Revisa la configuración
    • Click "Create app client"

Paso 3: Obtener Credenciales

3.1 User Pool ID

  1. En tu User Pool, ve a "User Pool overview"
  2. Copia el "User Pool ID" (formato: us-east-1_xxxxxxxxx)

3.2 App Client ID

  1. En "App integration" → "App clients and analytics"
  2. Encuentra tu app client
  3. Copia el "App client ID"

3.3 App Client Secret (si es necesario)

  1. En la misma sección, haz clic en "Show client secret"
  2. Copia el "App client secret"

Paso 4: Configurar Variables de Entorno

4.1 Backend (.env)

# AWS Cognito Configuration
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=tu_access_key_id
AWS_SECRET_ACCESS_KEY=tu_secret_access_key

# Cognito User Pool
COGNITO_USER_POOL_ID=us-east-1_xxxxxxxxx
COGNITO_CLIENT_ID=tu_client_id
COGNITO_CLIENT_SECRET=tu_client_secret

# Server Configuration
PORT=3001
NODE_ENV=development

# JWT Secret for additional security
JWT_SECRET=tu_jwt_secret_aqui

# Frontend URL for CORS
FRONTEND_URL=http://localhost:5173

# MFA Configuration
MFA_ENABLED=true
MFA_ISSUER=CognitoAuthSystem

4.2 Frontend (client/.env)

VITE_API_URL=http://localhost:3001/api

Paso 5: Configurar AWS Credentials

5.1 Crear IAM User (Recomendado)

  1. Ve a IAM en AWS Console
  2. Crea un nuevo usuario
  3. Asigna la política "AmazonCognitoPowerUser" o crea una política personalizada:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["cognito-idp:*"],
      "Resource": "*"
    }
  ]
}

5.2 Obtener Access Keys

  1. En el usuario IAM, ve a "Security credentials"
  2. Crea "Access keys"
  3. Copia el Access Key ID y Secret Access Key

Paso 6: Verificar Configuración

6.1 Test de Conexión

  1. Ejecuta el backend: npm run dev:server
  2. Verifica que no haya errores de configuración
  3. Haz una petición a: http://localhost:3001/health

6.2 Test de Registro

  1. Ejecuta el frontend: npm run dev:client
  2. Ve a http://localhost:5173/register
  3. Intenta registrar un usuario de prueba

🔧 Configuraciones Adicionales

Configurar Email Personalizado (Opcional)

  1. En tu User Pool, ve a "Messaging"
  2. Configura un dominio de email verificado
  3. Personaliza los templates de email

Configurar Triggers (Opcional)

  1. En tu User Pool, ve a "User Pool properties"
  2. En "Lambda triggers", puedes configurar funciones Lambda para:
    • Pre-authentication
    • Post-authentication
    • Pre-sign-up
    • Post-confirmation

Configurar Dominios Personalizados (Opcional)

  1. En tu User Pool, ve a "App integration"
  2. En "Domain name", puedes configurar un dominio personalizado

🚨 Troubleshooting

Error: "Invalid credentials"

  • Verifica que las AWS credentials sean correctas
  • Asegúrate de que el usuario IAM tenga permisos para Cognito

Error: "User pool not found"

  • Verifica que el User Pool ID sea correcto
  • Asegúrate de que estés en la región correcta

Error: "App client not found"

  • Verifica que el Client ID sea correcto
  • Asegúrate de que el app client esté en el User Pool correcto

Error: "MFA not enabled"

  • Verifica que MFA esté habilitado en el User Pool
  • Asegúrate de que "Software token MFA (TOTP)" esté marcado

Error: "Authentication flow not supported"

  • Verifica que "USER_PASSWORD_AUTH" esté habilitado en el app client
  • Asegúrate de que el app client sea público

📞 Soporte

Si tienes problemas con la configuración:

  1. Revisa los logs del servidor
  2. Verifica la documentación oficial de AWS Cognito
  3. Asegúrate de que todas las variables de entorno estén configuradas correctamente
  4. Verifica que el User Pool y App Client estén en la misma región

¡Configuración completada! 🎉

Ahora puedes ejecutar el sistema completo con:

npm run dev