Préparer une migration Azure AD B2C avec EntraExporter
Avant d'entreprendre une migration depuis Azure AD B2C vers Microsoft Entra External ID (EEID) — ou vers tout autre fournisseur d'identité — il est indispensable de disposer d'un inventaire exhaustif de votre tenant existant. Sans cette cartographie préalable, le risque d'oubli de composants critiques (applications, flux utilisateurs, attributs d'extension) est élevé.
C'est précisément le rôle du module PowerShell EntraExporter : il permet d'exporter l'intégralité de la configuration d'un tenant Entra ID ou Azure AD B2C vers des fichiers JSON structurés, exploitables comme base de référence pour piloter votre migration.
Qu'est-ce qu'EntraExporter ?
EntraExporter est un module PowerShell open source qui exporte les paramètres de configuration d'un tenant Entra ID ou Azure AD B2C vers des fichiers .json locaux. Il supporte également Entra External ID, ce qui le rend particulièrement adapté aux scénarios de migration.
Installation et authentification
Installer le module EntraExporter
L'installation s'effectue depuis la PowerShell Gallery :
1Install-Module EntraExporterPermissions Microsoft Graph requises
L'export nécessite un ensemble de permissions en lecture sur Microsoft Graph. Pour un tenant Azure AD B2C, les scopes essentiels sont les suivants :
1Connect-MgGraph -TenantId "<votre-tenant-id>" `2 -Scopes "Directory.Read.All", `3 "Application.Read.All", `4 "IdentityUserFlow.Read.All"Attention aux permissions non pertinentes en B2C
La liste complète des scopes documentés pour EntraExporter inclut des permissions comme EntitlementManagement.Read.All, OnPremDirectorySynchronization.Read.All, Teamwork.Read.All ou encore SharepointTenantSettings.Read.All. Ces scopes sont spécifiques à Entra ID et ne s'appliquent pas à un tenant Azure AD B2C. Limitez-vous aux permissions strictement nécessaires.
Pour une authentification complète couvrant l'ensemble des types d'objets B2C, voici la liste exhaustive des scopes supportés :
1Connect-AzAccount2Connect-MgGraph -Scopes 'Directory.Read.All', `3 'Policy.Read.All', `4 'IdentityProvider.Read.All', `5 'Organization.Read.All', `6 'User.Read.All', `7 'IdentityUserFlow.Read.All', `8 'APIConnectors.Read.All', `9 'Application.Read.All', `10 'RoleManagement.Read.All', `11 'AuditLog.Read.All'Exporter la configuration B2C
Authentification au tenant B2C
Connectez-vous au tenant Azure AD B2C cible en spécifiant son identifiant :
1Connect-MgGraph -TenantId "<votre-tenant-id>" `2 -Scopes "Directory.Read.All","Application.Read.All","IdentityUserFlow.Read.All"Lancer l'export ciblé
Pour un premier inventaire orienté migration, ciblez les types d'objets les plus critiques :
1Export-Entra -Path 'C:\Exports\B2C-Backup' -Type B2C,Users,ApplicationsL'exécution produit une sortie similaire à celle-ci :
1➡️ identity/userFlows2➡️ identity/b2cUserFlows3➡️ identity/userFlowAttributes4➡️ applications5➡️ users6Processing batch of 3 request(s):7 → applications/8 → identity/b2cUserFlows9 → identity/userFlows10Processing batch of 2 request(s):11 → identity/userFlowAttributes12 → users/?$count=true&$expand=extensionsExport complet du tenant
Pour obtenir un snapshot exhaustif de tous les objets du tenant :
1Export-Entra -Path 'C:\Exports\B2C-Backup' -AllStructure des fichiers exportés
L'export génère une arborescence de répertoires organisée par type d'objet. Voici les principaux répertoires produits et leur contenu.
Applications
Chaque application enregistrée dans le tenant dispose de son propre sous-répertoire. Le fichier JSON associé contient l'ensemble des métadonnées de l'application :
1{2 "id": "0e...cd",3 "appId": "09...93",4 "displayName": "MonApplication MVC",5 "createdDateTime": "2021-09-05T22:13:23Z",6 "identifierUris": [],7 "isFallbackPublicClient": null,8 "nativeAuthenticationApisEnabled": null9}Flux utilisateurs et attributs B2C
Le répertoire identity contient les flux utilisateurs (b2cUserFlows), les attributs intégrés et les attributs d'extension personnalisés.
Exemple d'attribut intégré :
1{2 "id": "city",3 "displayName": "City",4 "description": "The city in which the user is located.",5 "userFlowAttributeType": "builtIn",6 "dataType": "string",7 "supportedTenantTypes": "b2c"8}Exemple d'attribut d'extension personnalisé :
1{2 "id": "extension_51...4e_CaptchaUserResponseToken",3 "displayName": "CaptchaUserResponseToken",4 "description": "For use with captcha.",5 "userFlowAttributeType": "custom",6 "dataType": "string",7 "supportedTenantTypes": "b2c"8}Utilisateurs
Chaque compte utilisateur est exporté dans un sous-répertoire individuel avec ses attributs complets :
1{2 "id": "00...2a",3 "accountEnabled": true,4 "createdDateTime": "2023-06-05T20:56:29Z",5 "creationType": "LocalAccount",6 "displayName": "Prénom Nom"7}Types d'objets exportables
Le paramètre -Type accepte les valeurs suivantes. Notez que certaines catégories sont exclusivement pertinentes pour Entra ID et non pour B2C.
| Type | Pertinent pour B2C | Description |
|---|---|---|
| B2C | âś… Oui | Flux utilisateurs, attributs, politiques B2C |
| Applications | ✅ Oui | Applications enregistrées |
| Users | âś… Oui | Comptes utilisateurs locaux |
| Identity | ✅ Oui | Fournisseurs d'identité |
| Policies | ✅ Oui | Politiques d'accès conditionnel et autres |
| Domains | ✅ Oui | Domaines personnalisés |
| PIM | ❌ Non | Privileged Identity Management (Entra ID uniquement) |
| EntitlementManagement | ❌ Non | Gestion des droits (Entra ID uniquement) |
| Teams | ❌ Non | Microsoft Teams (Entra ID uniquement) |
| Sharepoint | ❌ Non | SharePoint (Entra ID uniquement) |
Exploiter l'export comme outil de suivi de migration
Les fichiers JSON produits par EntraExporter constituent une base solide pour construire un tableau de bord de migration. Voici les usages recommandés :
- Inventaire initial : identifiez tous les objets Ă migrer (applications, flux, attributs, utilisateurs)
- Matrice de suivi : exportez les données vers un tableur pour créer une checklist de migration par composant
- Validation post-migration : relancez l'export sur le tenant Entra External ID cible et comparez les deux exports pour identifier les écarts
- Détection des attributs d'extension personnalisés : ces attributs sont souvent oubliés lors des migrations et nécessitent une recréation manuelle
Astuce : comparaison source / cible
EntraExporter supporte nativement Entra External ID. Lancez le même export sur votre tenant EEID après migration et comparez les arborescences JSON avec un outil de diff (par exemple git diff ou un outil dédié comme Beyond Compare). Vous obtiendrez une vue précise des objets manquants ou mal configurés.
Important : les Custom Policies (IEF) ne sont pas exportées
Si votre tenant Azure AD B2C utilise des Identity Experience Framework (IEF) Custom Policies, celles-ci ne sont pas exportées par EntraExporter. Assurez-vous de versionner vos fichiers XML de politiques personnalisées séparément dans un dépôt Git avant toute migration.
Conclusion
EntraExporter est un outil précieux pour toute équipe IT engagée dans une migration Azure AD B2C. Il offre une visibilité complète sur la configuration existante et sert de référentiel pour valider l'intégrité de la migration. Combiné à une approche méthodique de suivi par composant, il réduit significativement le risque d'omissions lors du passage vers Entra External ID.
Pour aller plus loin, explorez également les outils de migration natifs Microsoft dédiés à la transition B2C vers EEID, ainsi que les capacités de gestion des identités externes disponibles dans le portail Entra.



