Aprovisionamiento de entrada controlado por API con Azure Logic Apps
En este tutorial se describe cómo usar el flujo de trabajo de Azure Logic Apps para implementar el aprovisionamiento de entrada controlado por API de Microsoft Entra ID. Siguiendo los pasos de este tutorial, puede convertir un archivo CSV que contenga datos de RRHH en una carga útil de solicitud masiva y enviarla al punto final de la API /bulkUpload de aprovisionamiento de Microsoft Entra. En el artículo también se proporcionan instrucciones sobre cómo se puede usar el mismo patrón de integración con cualquier sistema de registro.
Escenario de integración
Requisitos empresariales
El sistema de registro genera exportaciones periódicas de archivos CSV que contienen datos de trabajo. Quiere implementar una integración que lea datos del archivo CSV y aprovisione automáticamente cuentas de usuario en el directorio de destino (Active Directory local para usuarios híbridos y Microsoft Entra ID para usuarios solo en la nube).
Requisito de implementación
Desde una perspectiva de implementación:
- Quiere usar un flujo de trabajo de Azure Logic Apps para leer datos de las exportaciones de archivos CSV disponibles en un recurso compartido de archivos de Azure y enviarlos al punto de conexión de la API de aprovisionamiento de entrada.
- En el flujo de trabajo de Azure Logic Apps, no quiere implementar la lógica compleja de comparar los datos de identidad entre el sistema de registro y el directorio de destino.
- Desea utilizar el servicio de aprovisionamiento de Microsoft Entra para aplicar sus reglas de aprovisionamiento gestionadas por TI para crear/actualizar/habilitar/deshabilitar automáticamente cuentas en el directorio de destino (Active Directory local o Microsoft Entra ID).
Variaciones del escenario de integración
Aunque en este tutorial se usa un archivo CSV como sistema de registro, puede personalizar el flujo de trabajo de Azure Logic Apps de ejemplo para leer datos de cualquier sistema de registro. Azure Logic Apps proporciona una amplia gama de conectores integrados y conectores administrados con desencadenadores y acciones pregenerados que puede usar en el flujo de trabajo de integración.
Esta es una lista de variaciones de escenarios de integración empresarial, donde el aprovisionamiento entrante controlado por API se puede implementar con un flujo de trabajo de Logic Apps.
# | Sistema de registro | Guía de integración sobre el uso de Logic Apps para leer datos de origen |
---|---|---|
1 | Archivos almacenados en un servidor SFTP | Use el conector SFTP integrado o el conector SSH de SFTP administrado para leer datos de los archivos almacenados en el servidor SFTP. |
2 | Tabla de base de datos | Si usa un servidor de Azure SQL o un SQL Server local, use el conector SQL Server para leer los datos de la tabla. Si usa una base de datos de Oracle, use el conector de base de datos de Oracle para leer los datos de la tabla. |
3 | SAP S/4 HANA local y hospedado en la nube o Sistemas SAP clásicos locales, como R/3 y ECC |
Use el conector de SAP para recuperar datos de identidad del sistema SAP. Para obtener ejemplos sobre cómo configurar este conector, consulte escenarios comunes de integración de SAP mediante Azure Logic Apps y el conector de SAP. |
4 | IBM MQ | Use el conector IBM MQ para recibir mensajes de aprovisionamiento de la cola. |
5 | Dynamics 365 Human Resources | Use el conector de Dataverse para leer datos de tablas de Dataverse usadas por Dynamics 365 Human Resources. |
6 | Cualquier sistema que exponga las API de REST | Si no encuentra un conector para el sistema de registro en la biblioteca de conectores de Logic Apps, puede crear su propio conector personalizado para leer datos del sistema de registro. |
Después de leer los datos de origen, aplique las reglas de preprocesamiento y convierta la salida del sistema de registro en una solicitud masiva que se pueda enviar al punto de conexión de API bulkUpload de aprovisionamiento de Microsoft Entra.
Importante
Si quiere compartir el flujo de trabajo de integración de aprovisionamiento de entrada controlado por API y Logic Apps con la comunidad, cree una plantilla de aplicación lógica, siga los pasos para usarla y envíe una solicitud de incorporación de cambios para su inclusión en el repositorio de GitHubentra-id-inbound-provisioning
.
Cómo usar este tutorial
La plantilla de implementación de Logic Apps publicada en el repositorio GitHub de aprovisionamiento entrante de Microsoft Entra automatiza varias tareas. También tiene lógica para controlar archivos CSV grandes y fragmentar la solicitud masiva para enviar 50 registros en cada solicitud. Aquí se muestra cómo puede probarla y personalizarla según sus requisitos de integración.
Nota
El flujo de trabajo de Azure Logic Apps de ejemplo se proporciona "tal cual" como referencia de implementación. Si tiene preguntas relacionadas con él o si quiere mejorarlo, use el repositorio de proyectos de GitHub.
# | Tarea de automatización | Guía de implementación | Personalización avanzada |
---|---|---|---|
1 | Lee los datos de trabajo del archivo CSV. | El flujo de trabajo de Logic Apps usa una función de Azure para leer el archivo CSV almacenado en un recurso compartido de archivos de Azure. La función de Azure convierte los datos CSV en formato JSON. Si el formato de archivo CSV es diferente, actualice el paso de flujo de trabajo "Analizar JSON" y "Construir SCIMUser". | Si el sistema de registros es diferente, consulte las instrucciones proporcionadas en la sección Variaciones del escenario de integración sobre cómo personalizar el flujo de trabajo de Logic Apps mediante un conector adecuado. |
2 | Preprocesar y convertir datos a formato SCIM. | De forma predeterminada, el flujo de trabajo de Logic Apps convierte cada registro del archivo CSV en una representación de usuario de SCIM Core + Usuario de empresa. Si tiene previsto usar extensiones del esquema SCIM personalizadas, actualice el paso "Construir SCIMUser" para incluir las extensiones del esquema SCIM personalizadas. | Si quiere ejecutar código C# para la aplicación de formato avanzada de formato y la validación de datos, use Azure Functions personalizados. |
3 | Usar el método de autenticación adecuado | Puede usar una entidad de servicio o usar una identidad administrada para acceder a la API de aprovisionamiento de entrada. Actualice el paso "Enviar SCIMBulkPayload al punto de conexión de la API" con el método de autenticación correcto. | - |
4 | Aprovisione cuentas en Active Directory local o en Microsoft Entra ID. | Configure la aplicación de aprovisionamiento de entrada controlada por API. Esto generará un único punto de conexión de API /bulkUpload. Actualice el paso "Enviar SCIMBulkPayload al punto de conexión de la API" para usar el punto de conexión de la API bulkUpload correcto. | Si tiene previsto usar una solicitud masiva con el esquema SCIM personalizado, amplíe el esquema de la aplicación de aprovisionamiento para incluir los atributos del esquema SCIM personalizados. |
5 | Examine los registros de aprovisionamiento y vuelva a intentar el aprovisionamiento de registros con errores. | Esta automatización aún no se ha implementado en el flujo de trabajo de Logic Apps de ejemplo. Para implementarlo, consulte la Graph API de los registros de aprovisionamiento. | - |
6 | Implemente la automatización basada en Logic Apps en producción. | Una vez que haya comprobado el flujo de aprovisionamiento controlado por la API y haya personalizado el flujo de trabajo de Logic Apps para satisfacer sus requisitos, implemente la automatización en su entorno. | - |
Paso 1: Creación de una cuenta de Azure Storage para hospedar el archivo CSV
Los pasos documentados en esta sección son opcionales. Si ya tiene una cuenta de almacenamiento existente o desea leer el archivo CSV desde otro origen, como el sitio de SharePoint o Blob Storage, actualice la aplicación lógica para usar el conector que prefiera.
- Inicie sesión en Azure Portal al menos como Administrador de aplicaciones.
- Busque "Cuentas de almacenamiento" y cree una nueva cuenta de almacenamiento.
- Asigne un grupo de recursos y asígnele un nombre.
- Después de que se cree la cuenta de almacenamiento, vaya al recurso.
- Haga clic en la opción de menú "Recurso compartido de archivos" y cree un nuevo recurso compartido de archivos.
- Compruebe que la creación del recurso compartido de archivos se ha realizado correctamente.
- Cargue un archivo CSV de ejemplo en el recurso compartido de archivos mediante la opción de carga.
- Esta es una captura de pantalla de las columnas del archivo CSV.
Paso 2: Configuración del convertidor CSV2JSON de la función de Azure
En el navegador asociado a su Azure portal, abra la URL del repositorio GitHub - https://github.com/joelbyford/CSVtoJSONcore.
Haga clic en el vínculo "Implementar en Azure" para implementar esta función de Azure en el inquilino de Azure.
Especifique el grupo de recursos en el que se va a implementar esta función de Azure.
Si recibe el error "Esta región tiene cuota de 0 instancias", pruebe a seleccionar otra región.
Asegúrese de que la implementación de la función de Azure como App Service sea correcta.
Vaya al grupo de recursos y abra la configuración de la aplicación web. Asegúrese de que está en estado "En ejecución". Copie el nombre de dominio predeterminado asociado a la aplicación web.
Ejecuta el siguiente script de PowerShell para probar si el punto de conexión CSVtoJSON funciona del modo esperado. Establece los valores correctos para las variables
$csvFilePath
y$uri
en el script.# Step 1: Read the CSV file $csvFilePath = "C:\Path-to-CSV-file\hr-user-data.csv" $csvContent = Get-Content -Path $csvFilePath # Step 2: Set up the request $uri = "https://az-function-webapp-your-domain/csvtojson" $headers = @{ "Content-Type" = "text/csv" } $body = $csvContent -join "`n" # Join the CSV lines into a single string # Step 3: Send the POST request $response = Invoke-WebRequest -Uri $uri -Method POST -Headers $headers -Body $body # Output and format the JSON response $response.Content | ConvertFrom-JSON | ConvertTo-JSON
Si el despliegue de la característica de Azure se realiza correctamente, la última línea del script genera la versión JSON del archivo CSV.
Para permitir que Logic Apps invoque esta función de Azure, en la configuración de CORS de la aplicación web escriba asterisco (*) y guarde la configuración.
Paso 3: Configuración del aprovisionamiento entrante de usuarios controlado por API
Paso 4: Configuración del flujo de trabajo de Azure Logic Apps
Haga clic en el botón siguiente para implementar la plantilla de Azure Resource Manager para el flujo de trabajo CSV2SCIMBulkUpload de Logic Apps.
En los detalles de la instancia, actualice los elementos resaltados copiando y pegando los valores de los pasos anteriores.
Para el parámetro
Azurefile_access Key
, abra la cuenta de almacenamiento de archivos de Azure y copie la clave de acceso que aparece en "Seguridad y redes".
Haga clic en la opción "Revisar y crear" para iniciar la implementación.
Una vez que haya completado la implementación, verá el mensaje siguiente.
Paso 5: Configuración de una identidad administrada asignada por el sistema
- Visite la configuración:> hoja Identidad del flujo de trabajo de Logic Apps.
- Habilite Identidad administrada asignada por el sistema.
- Recibirá un mensaje para confirmar el uso de la identidad administrada. Haga clic en Sí.
- Conceda a la identidad administrada permisos para realizar la carga masiva.
Paso 6: Revisión y ajuste de los pasos del flujo de trabajo
Revise la configuración de cada paso del flujo de trabajo para asegurarse de que es correcta.
Abra el paso "Obtener contenido de archivo mediante la ruta de acceso" y corríjalo para ir al almacenamiento de archivos de Azure en su inquilino.
Actualice la conexión si es necesario.
Asegúrese de que el paso "Convertir CSV a JSON" apunta a la instancia correcta de la aplicación web de la función de Azure.
Si el contenido o los encabezados del archivo CSV son diferentes, actualice el paso "Analizar JSON" con la salida de JSON que puede recuperar de la llamada API a la función de Azure. Usa la salida de PowerShell del paso 2.
En el paso "Construir SCIMUser", asegúrese de que los campos CSV se asignan correctamente a los atributos SCIM que se usarán para el procesamiento.
En el paso "Enviar SCIMBulkPayload al punto de conexión de API", asegúrese de que usa el punto de conexión de API y el mecanismo de autenticación correctos.
Paso 7: Ejecución del desencadenador y prueba del flujo de trabajo de Logic Apps
- En la versión "Disponible con carácter general" del diseñador de Logic Apps, haga clic en Ejecutar desencadenador para ejecutar manualmente el flujo de trabajo.
- Una vez completada la ejecución, revise la acción que Logic Apps realizó en cada iteración.
- En la iteración final, debería ver que Logic Apps carga datos en el punto de conexión de la API de aprovisionamiento de entrada. Busque el código de estado
202 Accept
. Puede copiar y pegar y comprobar la solicitud de carga masiva.