Integraciones

AWS Cognito

Este módulo permite a Anjana Data sincronizar los usuarios de un User Pool de Amazon Cognito.

El proceso utiliza la API estándar de AWS (ListUsers) para descargar periódicamente el directorio completo de usuarios. Todos los atributos del usuario (estándar y personalizados) están disponibles para el mapeo de campos.


Parte 1: Configuración en AWS (IAM User)

Anjana necesita credenciales programáticas (Access Key / Secret Key) con permisos de lectura específicos para acceder al User Pool.

Paso 1: Crear Usuario IAM

  1. Vaya a la consola de IAM (Identity and Access Management) en AWS.

  2. Seleccione Usuarios > Crear usuario.

  3. Asigne un nombre (ej. anjana-cognito-sync).

  4. Complete la creación sin dar acceso a la consola.

  5. Vaya a la pestaña Credenciales de seguridad > Claves de acceso > Crear clave de acceso.

  6. Seleccione "Código local" o "Aplicación de terceros".

  7. Importante: Copie y guarde la Clave de acceso (Access Key) y la Clave de acceso secreta (Secret Key).

Paso 2: Crear Política de Permisos (Policy)

Es recomendable restringir el acceso únicamente al User Pool que desea sincronizar.

  1. En el usuario IAM, añada una Política en línea (Inline Policy) o cree una política gestionada.

  2. Use el siguiente JSON, reemplazando el Resource con el ARN de su User Pool (o use * para dar acceso a todos los pools de la cuenta):

YAML
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "CognitoReadAccess",
            "Effect": "Allow",
            "Action": [
                "cognito-idp:ListUsers",
                "cognito-idp:AdminGetUser"
            ],
            "Resource": "arn:aws:cognito-idp:eu-west-1:123456789012:userpool/eu-west-1_AbCdEfG"
        }
    ]
}

Parte 2: Obtener Datos del User Pool

  1. Vaya a la consola de Amazon Cognito.

  2. Acceda al User Pool que desea conectar.

  3. En la cabecera de la página de "Información general", copie el ID de grupo de usuarios (User Pool ID).

    • Ejemplo: eu-west-1_XyZ123

  4. Anote la Región donde está desplegado (ej. eu-west-1).


Parte 3: Configuración en application.yml

Edite el archivo de configuración de Anjana e incluya los datos en la sección security.provisioning.providers.aws-cognito.

YAML
security:
  provisioning:
    providers:
      aws-cognito:
        # Clave única para identificar este origen de datos (ej: pool-clientes-externos)
        pool-clientes:
          # Región AWS del User Pool
          region: "eu-west-1"
          # ID del User Pool (obtenido en Parte 2)
          user-pool-id: "eu-west-1_XyZ123456"
          # Credenciales del Usuario IAM (creado en Parte 1)
          access-key: "AKIAXXXXXXXXXXXXXXXX"
          secret-key: "SECRET_KEY_XXXXXXXXXXXXXXXXXXXXXXXX"

Resumen de Propiedades

Utilice esta tabla para localizar rápidamente los valores necesarios en la consola de AWS.

Propiedad YAML

Descripción

Origen en AWS

access-key

ID de la clave de acceso del usuario técnico.

IAM > Usuarios > Credenciales de seguridad

secret-key

Secreto de la clave de acceso.

IAM > Usuarios > Credenciales de seguridad (Solo visible al crear)

region

Código de la región donde está el servicio.

Consola AWS (Esquina superior derecha)

user-pool-id

Identificador único del directorio.

Amazon Cognito > User Pools > Información general


Mapeo de campos personalizado (field-mapping)

Anjana incluye un mapeo por defecto que cubre los casos habituales. Puede sobreescribir cualquier campo indicando la clave del atributo Cognito de la que debe leer el valor. Las claves son listas en orden de prioridad: se usa el primer valor no vacío.

Mapeo por defecto

Campo Anjana

Claves por defecto (orden de prioridad)

userName

preferred_username, email

email

email

firstName

given_name, name

lastName

family_name

phone

phone_number

title

custom:title

Campos disponibles

Anjana expone todos los atributos del usuario de Cognito (tanto estándar como personalizados), por lo que cualquier clave puede usarse en field-mapping.

Clave

Descripción

sub

Identificador único e inmutable del usuario.

email

Dirección de correo electrónico.

email_verified

true si el email está verificado.

phone_number

Teléfono (formato E.164, ej. +34612345678).

name

Nombre completo.

given_name

Nombre de pila.

family_name

Apellidos.

middle_name

Segundo nombre.

nickname

Apodo.

preferred_username

Nombre de usuario preferido (login).

profile

URL del perfil.

gender

Género.

birthdate

Fecha de nacimiento.

zoneinfo

Zona horaria (ej. Europe/Madrid).

locale

Configuración regional (ej. es_ES).

custom:*

Cualquier atributo personalizado del pool (ej. custom:title, custom:department).

Ejemplo de configuración

YAML
security:
  provisioning:
    providers:
      aws-cognito:
        pool-clientes:
          region: "eu-west-1"
          user-pool-id: "eu-west-1_XyZ123456"
          access-key: "..."
          secret-key: "..."
          field-mapping:
            # Leer cargo del atributo personalizado 'custom:position'
            title: ["custom:position", "custom:title"]
            # Leer departamento del atributo 'custom:department'
            # (no hay un campo Anjana para departamento, pero puede usarse como fallback en title)
            phone: ["phone_number"]