Partager via


Provisionnement entrant piloté par l’API avec Azure Logic Apps

Ce tutoriel explique comment utiliser le workflow Azure Logic Apps pour implémenter le provisionnement entrant piloté par l’API avec Microsoft Entra ID. Suivez les étapes présentées ci-après pour convertir un fichier CSV contenant des données RH dans la charge utile d’une requête en bloc et l’envoyer au point de terminaison de l’API de provisionnement /bulkUpload de Microsoft Entra. L’article fournit également des conseils sur la façon d’adapter ce même modèle d’intégration pour l’utiliser avec n’importe quel système d’enregistrement.

Scénario d’intégration

Exigence commerciale

Votre système d’enregistrement génère régulièrement des fichiers CSV contenant des données sur les employés. Vous souhaitez implémenter une intégration qui lit les données issues de ces fichiers CSV et provisionne automatiquement les comptes d’utilisateur dans votre annuaire cible (Active Directory local pour les utilisateurs hybrides et Microsoft Entra ID pour les utilisateurs cloud uniquement).

Exigences d’implémentation

D’un point de vue technique :

  • Vous souhaitez utiliser un workflow Azure Logic Apps pour lire les données issues des fichiers CSV stockés dans un partage de fichiers Azure et les envoyer au point de terminaison de l’API de provisionnement entrant.
  • Dans votre workflow Azure Logic Apps, vous ne souhaitez pas implémenter la logique complexe de comparaison des données d’identité entre votre système d’enregistrement et votre annuaire cible.
  • Vous souhaitez vous appuyer sur le service de provisionnement Microsoft Entra pour appliquer vos règles de provisionnement gérées par le service informatique afin de créer,mettre à jour, activer ou désactiver automatiquement des comptes dans l’annuaire cible (Active Directory local ou Microsoft Entra ID).

Graphique d’une intégration basée sur Azure Logic Apps.

Variantes du scénario d’intégration

Bien que ce tutoriel utilise un fichier CSV comme système d’enregistrement, vous pouvez adapter le workflow Azure Logic Apps proposé pour lire les données depuis n’importe quel système d’enregistrement. Azure Logic Apps offre un vaste éventail de connecteurs intégrés et de connecteurs managés, avec des déclencheurs et des actions prédéfinis, que vous pouvez utiliser dans votre workflow d’intégration.

Voici quelques exemples de variantes au scénario d’intégration d’entreprise, dans lesquelles le provisionnement entrant piloté par l’API peut être implémenté avec un workflow Logic Apps.

# Système d’enregistrement Conseils d’intégration sur l’utilisation de Logic Apps pour lire les données sources
1 Fichiers stockés sur serveur SFTP Utilisez le connecteur SFTP intégré ou le connecteur SSH SFTP managé pour lire les données contenues dans les fichiers stockés sur le serveur SFTP.
2 Table de base de données Si vous utilisez un serveur Azure SQL ou un SQL Server local, utilisez le connecteur SQL Server pour lire les données de vos tables.
Si vous utilisez une base de données Oracle, utilisez le connecteur Oracle Database pour lire les données de vos tables.
3 SAP S/4 HANA hébergé localement et dans le cloud ou
systèmes SAP locaux classiques, comme R/3 et ECC
Utilisez le connecteur SAP pour récupérer les données d’identité depuis votre système SAP. Pour des exemples de configuration, consultez les scénarios d’intégration SAP courants avec Azure Logic Apps et le connecteur SAP.
4 IBM MQ Utilisez le connecteur IBM MQ pour recevoir des messages de provisionnement de la file d’attente.
5 Dynamics 365 Human Resources Utilisez le connecteur Dataverse pour lire les données des tables Dataverse utilisées par Microsoft Dynamics 365 Human Resources.
6 Tout système exposant des API REST Si aucun connecteur n’est disponible pour votre système d’enregistrement dans la bibliothèque de connecteurs Logic Apps, vous pouvez créer votre propre connecteur personnalisé pour lire les données.

Une fois les données sources lues, appliquez vos règles de prétraitement et convertissez la sortie de votre système d’enregistrement en une requête en bloc à envoyer au point de terminaison de l’API de provisionnement /bulkUpload de Microsoft Entra.

Importante

Si vous souhaitez partager votre workflow d’intégration Logic Apps et de provisionnement entrant piloté par l’API avec la communauté, créez un modèle d’application logique, documentez les étapes d’utilisation et envoyez une demande de tirage pour inclusion dans le référentiel GitHub entra-id-inbound-provisioning.

Utilisation du tutoriel

Le modèle de déploiement Logic Apps publié dans le référentiel GitHub de provisionnement entrant de Microsoft Entra automatise plusieurs tâches. Il contient également une logique de gestion des fichiers CSV volumineux, en divisant automatiquement les requêtes en lots de 50 enregistrements. Voici comment vous pouvez le tester et le personnaliser en fonction de vos besoins d’intégration.

Note

L’exemple de workflow Azure Logic Apps est fourni « en l’état » à des fins de référence. Si vous avez des questions ou des propositions d’amélioration, utilisez le référentiel GitHub du projet.

# Tâche d’automatisation Conseils de mise en œuvre Personnalisation avancée
1 Lire les données des employés à partir du fichier CSV. Le workflow Logic Apps utilise une fonction Azure pour lire le fichier CSV stocké dans un partage de fichiers Azure. La fonction Azure convertit les données CSV au format JSON. Si le format de votre fichier CSV est différent, modifiez les étapes « Parse JSON » (Analyser JSON) et « Construct SCIMUser » (Créer SCIMUser) du workflow. Si votre système d’enregistrement est différent, consultez les directives fournies dans la section Variantes du scénario d’intégration sur la façon dont vous pouvez adapter le workflow Logic Apps avec le connecteur approprié.
2 Prétraiter les données et les convertir au format SCIM. Par défaut, le workflow Logic Apps convertit chaque enregistrement du fichier CSV en une représentation SCIM Core User + Enterprise User. Si vous envisagez d’utiliser des extensions de schéma SCIM personnalisées, modifiez l’étape « Construct SCIMUser » pour les inclure. Si vous souhaitez appliquer des règles avancées de formatage ou de validation, utilisez des fonctions Azure personnalisées en C#.
3 Utiliser la méthode d’authentification appropriée. Vous pouvez utiliser un principal de service ou utiliser une identité managée pour accéder à l’API de provisionnement entrant. Modifiez l’étape « Send SCIMBulkPayload to API endpoint » (Envoyer SCIMBulkPayload au point de terminaison d’API) avec la méthode d’authentification appropriée. -
4 Provisionner les comptes dans Active Directory local ou Microsoft Entra ID. Configurez l’application de provisionnement entrant piloté par l’API. Cela génère un point de terminaison d'API /bulkUpload unique. Modifiez l’étape « Send SCIMBulkPayload to API endpoint » pour utiliser le point de terminaison d’API bulkUpload approprié. Si vous envisagez d’utiliser une requête en bloc avec un schéma SCIM personnalisé, étendez le schéma d’application de provisionnement pour inclure vos attributs de schéma SCIM personnalisé.
5 Analyser les journaux de provisionnement et relancer le provisionnement des enregistrements ayant échoué. Cette automatisation n’est pas encore implémentée dans l’exemple de flux de travail Logic Apps. Pour l’implémenter, consultez les journaux de provisionnement de l’API Graph. -
6 Déployer votre automatisation basée sur Logic Apps en production. Après avoir vérifié votre flux de provisionnement piloté par l’API, puis personnalisé le workflow Logic Apps pour qu’il réponde à vos besoins, déployez l’automatisation dans votre environnement. -

Étape 1 : Créer un compte de stockage Azure pour héberger le fichier CSV

Les étapes documentées dans cette section sont facultatives. Si vous disposez déjà d’un compte de stockage ou si vous préférez lire le fichier CSV depuis une autre source (comme un site SharePoint ou un stockage Blob), vous pouvez simplement adapter l’application logique de façon à utiliser le connecteur de votre choix.

  1. Connectez-vous au portail Azure avec un compte disposant au moins du rôle Administrateur d’application.
  2. Recherchez « Comptes de stockage » et créez un compte de stockage. Capture d’écran de la création d’un compte de stockage.
  3. Attribuez un groupe de ressources et donnez-lui un nom. Capture d’écran de l’attribution d'un groupe de ressources.
  4. Une fois le compte de stockage créé, accédez à la ressource.
  5. Sélectionnez l’option de menu « Partage de fichiers » et créez un partage de fichiers. Capture d’écran de la création d’un partage de fichiers.
  6. Vérifiez que le partage de fichiers a bien été créé. Capture d’écran d’une création de partage de fichiers réussie.
  7. Chargez un exemple de fichier CSV dans le partage de fichiers à l’aide de l’option prévue à cet effet.
  8. Voici une capture d’écran des colonnes du fichier CSV. Capture d’écran des colonnes dans Excel.

Étape 2 : Configurer le convertisseur CSV2JSON Azure Function

  1. Dans votre navigateur connecté au portail Azure, ouvrez l’URL du référentiel GitHub - https://github.com/joelbyford/CSVtoJSONcore.

  2. Sélectionnez le lien « Déployer sur Azure » pour déployer cette fonction Azure sur votre locataire Azure. Capture d’écran représentant le déploiement de la fonction Azure.

  3. Spécifiez le groupe de ressources dans lequel vous souhaitez déployer la fonction. Capture d’écran de la configuration du groupe de ressources de la fonction Azure.

    Si vous obtenez l’erreur « Cette région a un quota de 0 instance », essayez de sélectionner une autre région.

  4. Vérifiez que le déploiement de la fonction Azure en tant qu’App Service aboutit.

  5. Accédez au groupe de ressources et ouvrez la configuration de l’application web. Vérifiez que son état est « En cours d’exécution ». Copiez le nom de domaine par défaut associé à l’application web. Capture d’écran du nom de domaine de l’application web de la fonction Azure.

  6. Exécutez le script PowerShell suivant pour tester si le point de terminaison CSVtoJSON fonctionne correctement. Définissez les variables $csvFilePath et $uri sur les bonnes valeurs dans le 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 
    
  7. Si le déploiement de la fonction Azure aboutit, la dernière ligne du script renvoie la version JSON du fichier CSV.

    Capture d’écran de la réponse de la fonction Azure. .

  8. Pour permettre à Logic Apps d’appeler la fonction Azure, accédez aux paramètres CORS de l’application web, entrez un astérisque (*) et enregistrez la configuration. Capture d’écran des paramètres CORS de la fonction Azure.

Étape 3 : Configurer le provisionnement d’utilisateurs entrant piloté par l’API

Étape 4 : Configurer votre workflow Azure Logic Apps

  1. Sélectionnez le bouton ci-dessous pour déployer le modèle Azure Resource Manager pour le flux de travail CSV2SCIMBulkUpload Logic Apps.

    Déployer dans Azure

  2. Sous la section des informations sur l’instance, mettez à jour les champs en surbrillance en copiant-collant les valeurs obtenues lors des étapes précédentes. Capture d’écran des informations sur l’instance dans Azure Logic Apps.

  3. Pour le paramètre Azurefile_access Key, accédez à votre compte de stockage Azure et copiez la clé d’accès située dans la section « Sécurité et mise en réseau ».
    Capture d’écran des clés d’accès du fichier Azure.

  4. Sélectionnez l’option « Vérifier et créer » pour démarrer le déploiement.

  5. Une fois le déploiement terminé, le message suivant s’affiche. Capture d’écran du déploiement Azure Logic Apps terminé.

Étape 5 : Configurer une identité managée affectée par le système

  1. Accédez à Paramètres -> Identité dans votre workflow Logic Apps.
  2. Activez l’identité managée affectée par le système. Capture d’écran de l’activation de l’identité managée.
  3. Une invite de confirmation s’affiche pour valider l’activation de l’identité managée. Sélectionnez Oui.
  4. Accordez à l’identité managée les autorisations nécessaires pour effectuer un chargement en bloc.

Étape 6 : Passer en revue et ajuster les étapes du workflow

  1. Ouvrez l’application logique dans la vue du concepteur. Capture d’écran de la vue du concepteur d’Azure Logic Apps.

  2. Passez en revue la configuration de chaque étape du flux de travail pour vous assurer qu’elle est correcte.

  3. Ouvrez l’étape « Get file content using path » (Obtenir le contenu du fichier à l’aide du chemin) et modifiez le chemin pour qu’il pointe vers le stockage de fichiers Azure dans votre locataire. Capture d’écran de l’étape pour récupérer le contenu du fichier.

  4. Mettez à jour la connexion si nécessaire.

  5. Assurez-vous que l’étape « Convert CSV to JSON » (Convertir CSV en JSON) pointe vers la bonne instance d’application web de la fonction Azure. Capture d’écran de l’appel de la fonction Azure pour convertir le fichier CSV en JSON.

  6. Si le contenu ou les en-têtes du fichier CSV sont différents, modifiez l’étape « Parse JSON » avec la sortie JSON obtenue suite à votre appel d’API à la fonction Azure. Utilisez la sortie PowerShell de l’étape 2. Capture d’écran de l’étape « Parse JSON ».

  7. À l’étape « Construct SCIMUser », vérifiez que les champs de votre fichier CSV sont correctement mappés aux attributs SCIM à utiliser pour le traitement.

    Capture d’écran de l’étape « Construct SCIMUser ».

  8. À l’étape « Envoyer SCIMBulkPayload au point de terminaison d’API », vérifiez que vous utilisez le bon point de terminaison d’API et le mécanisme d’authentification.

    Capture d’écran de l’invocation de l’API de chargement en bloc avec l’entité managée.

Étape 7 : Exécuter le déclencheur et tester le workflow Logic Apps

  1. Dans la version « Disponibilité générale » du concepteur Logic Apps, sélectionnez le déclencheur d’exécution pour exécuter manuellement le flux de travail. Capture d’écran de l’application Logic Apps s’exécutant.
  2. Une fois l’exécution terminée, examinez l’action que Logic Apps a effectuée dans chaque itération.
  3. Dans l’itération finale, les données de chargement de Logic Apps vers le point de terminaison de l’API de provisionnement entrant doivent s’afficher. Recherchez code d’état 202 Accept. Vous pouvez copier-coller et vérifier la requête de chargement en bloc. Capture d’écran du résultat d’exécution de Logic Apps.

Étapes suivantes