Skip to Content

Importación y Exportación de Usuarios

Auris proporciona un sistema de importación y exportación masiva de datos de usuario. La importación es útil para migrar desde un proveedor de identidad existente, incorporar un lote de empleados desde un sistema de RRHH o inicializar usuarios en un nuevo tenant. La exportación es útil para crear copias de seguridad, auditar tu base de usuarios o migrar a otro sistema.

Ambas operaciones son asíncronas. Auris procesa el archivo en segundo plano y expone un endpoint de estado del trabajo para que puedas sondear la finalización o mostrar un indicador de progreso.


Formatos de Importación

Auris acepta dos formatos de archivo para la importación de usuarios.

Formato CSV

La primera fila debe ser una fila de encabezado. El orden de las columnas no importa, pero los nombres de las columnas deben coincidir exactamente.

email,username,firstName,lastName,password,roles [email protected],alice,Alice,Rossi,ContraseñaTemporal123!,member [email protected],bob,Bob,Marley,,member|billing-admin [email protected],,Carol,White,,,

Referencia de columnas:

ColumnaRequeridaNotas
emailSíDebe ser único dentro del tenant
usernameNoPor defecto es la parte local del email si se omite
firstNameNo
lastNameNo
passwordNoSi se omite, el usuario se crea sin credenciales y debe restablecer mediante email
rolesNoLista separada por pipes de nombres de roles: member|admin

Formato JSON

El archivo debe contener un array JSON de objetos de usuario. Los campos coinciden con los nombres de las columnas del CSV.

[ { "email": "[email protected]", "username": "alice", "firstName": "Alice", "lastName": "Rossi", "password": "ContraseñaTemporal123!", "roles": ["member"] }, { "email": "[email protected]", "roles": ["member", "billing-admin"] } ]

Las contraseñas proporcionadas en los archivos de importación se transmiten por HTTPS y se hashean en el servidor antes de almacenarse. La contraseña en texto plano nunca se persiste. Para importaciones de producción con datos de usuarios reales, es preferible omitir las contraseñas y forzar un flujo de restablecimiento de contraseña en su lugar.


Proceso de Importación

Subir el archivo

Envía el archivo a través de la interfaz de arrastrar y soltar de la Consola (Configuración → Importar/Exportar) o mediante la API:

POST/api/users/importRequires: manage:users

Acepta una solicitud multipart/form-data con un campo file que contiene un archivo CSV o JSON. Devuelve el trabajo de importación creado.

curl -X POST https://auth.tuapp.com/api/users/import \ -H "Authorization: Bearer $TOKEN" \ -H "x-tenant: tu-tenant" \ -F "[email protected]"

Respuesta:

{ "ok": true, "data": { "id": "import_01HX...", "fileName": "usuarios.csv", "format": "CSV", "status": "PENDING", "totalRows": 0, "processedRows": 0, "successCount": 0, "errorCount": 0, "createdAt": "2025-06-10T14:00:00Z" } }

Seguir el progreso del trabajo

Sondea el endpoint de detalle del trabajo hasta que status ya no sea PENDING o PROCESSING.

GET/api/users/import/[id]Requires: manage:users

Devuelve el estado actual de un trabajo de importación incluyendo recuentos de filas y errores por fila.

Estados del trabajo:

EstadoSignificado
PENDINGEl trabajo está en cola y aún no ha comenzado a procesarse
PROCESSINGAuris está leyendo y creando usuarios activamente
COMPLETEDTodas las filas se procesaron correctamente
PARTIALEl procesamiento terminó pero algunas filas fallaron — ver errors
FAILEDTodo el trabajo falló (ej. formato de archivo no válido, datos ilegibles)

Revisar los resultados

Una respuesta de trabajo completado o parcial incluye detalles de errores:

{ "ok": true, "data": { "id": "import_01HX...", "status": "PARTIAL", "totalRows": 150, "processedRows": 150, "successCount": 147, "errorCount": 3, "errors": [ { "row": 12, "email": "[email protected]", "reason": "La dirección de email ya existe en este tenant" }, { "row": 67, "reason": "Falta campo requerido: email" }, { "row": 103, "email": "email-incorrecto", "reason": "Formato de dirección de email no válido" } ] } }

Comportamiento de la Importación

Comprensión de cómo Auris maneja los casos extremos durante la importación:

Emails duplicados: Si ya existe un usuario con el mismo email en el tenant, la fila se omite y se cuenta como error. El registro del usuario existente no se modifica.

Contraseñas ausentes: Los usuarios creados sin contraseña se aprovisionan en un estado de credenciales deshabilitadas. Deben usar el flujo “Olvidé mi Contraseña” o recibir un email de restablecimiento de contraseña activado por un administrador para obtener acceso.

Asignación de roles: Los roles listados en el archivo de importación se asignan después de la creación del usuario. Si el nombre de un rol no existe en el tenant, la fila se marca como error parcial — el usuario se crea, pero la asignación de rol falla.

Sincronización con Keycloak: Cada usuario importado correctamente se crea tanto en la base de datos de Auris como en el realm subyacente de Keycloak. Los dos registros están vinculados por keycloakId.

Modelo de transacciones: Auris procesa las filas individualmente en lugar de en una sola transacción. Un fallo en la fila 50 no revierte las filas 1–49.


Listado de Trabajos de Importación

GET/api/users/importRequires: manage:users

Devuelve una lista paginada de todos los trabajos de importación del tenant, ordenados por fecha de creación en orden descendente.


Exportación de Usuarios

La exportación de usuarios genera un archivo que contiene todos los usuarios activos (no eliminados) del tenant. La operación es asíncrona: activas la exportación y luego descargas el archivo cuando la generación está completa.

Activar una exportación

POST/api/users/exportRequires: manage:users

Inicia un trabajo de exportación. Acepta format en el cuerpo de la solicitud: "CSV" o "JSON". Devuelve el registro del trabajo de exportación.

{ "format": "JSON" }

Respuesta:

{ "ok": true, "data": { "id": "export_01HX...", "format": "JSON", "status": "PENDING", "totalUsers": 0, "expiresAt": "2025-06-17T14:00:00Z", "createdAt": "2025-06-10T14:00:00Z" } }

Sondear la finalización

GET/api/users/exportRequires: manage:users

Devuelve una lista de todos los trabajos de exportación, incluyendo estado y caducidad.

Descargar el archivo

GET/api/users/export/[id]/downloadRequires: manage:users

Devuelve el archivo de exportación como respuesta binaria. Establece Accept: text/csv o Accept: application/json para controlar el tipo de contenido de la respuesta, o confía en el formato configurado del trabajo.

curl https://auth.tuapp.com/api/users/export/export_01HX.../download \ -H "Authorization: Bearer $TOKEN" \ -H "x-tenant: tu-tenant" \ -o exportacion-usuarios.json

Los archivos de exportación se almacenan temporalmente y caducan después de un período configurado (por defecto: 7 días). Descarga el archivo antes de la marca de tiempo expiresAt. Después de la caducidad, debes activar una nueva exportación.

Campos exportados

La exportación incluye:

CampoNotas
idID de usuario de Auris
email
username
firstName
lastName
enabledtrue / false
rolesArray de nombres de roles
createdAtMarca de tiempo ISO 8601
lastLoginMarca de tiempo ISO 8601, o null si el usuario nunca ha iniciado sesión
metadataObjeto de metadatos completo

Los hashes de contraseñas nunca se incluyen en las exportaciones. Si migras a otro IdP, los usuarios deberán restablecer sus contraseñas después de la migración.


Guía en la Consola

La interfaz de importación/exportación de la Consola está disponible en Configuración → Importar/Exportar.

Importación:

  1. Arrastra y suelta un archivo .csv o .json en la zona de carga, o haz clic para abrir el selector de archivos.
  2. La Consola muestra una vista previa de las primeras 10 filas para validación antes de enviarlas.
  3. Tras el envío, una barra de progreso rastrea el procesamiento. La barra se actualiza cada pocos segundos mediante sondeo.
  4. Cuando el trabajo finaliza, un resumen de resultados muestra el recuento de éxitos, el recuento de errores y un enlace al cuadro de detalles de errores.

Exportación:

  1. Selecciona el formato de exportación (CSV o JSON).
  2. Haz clic en “Exportar Usuarios”. La Consola muestra el estado del trabajo.
  3. Cuando la exportación está completa, aparece un botón “Descargar”. Haz clic para guardar el archivo.
  4. Las exportaciones anteriores se listan con su estado, fecha de creación y fecha de caducidad.

Permisos Requeridos

OperaciónPermiso
Listar trabajos de importaciónmanage:users
Subir archivo de importaciónmanage:users
Obtener detalle del trabajo de importaciónmanage:users
Activar exportaciónmanage:users
Descargar archivo de exportaciónmanage:users

Páginas Relacionadas