Gérer Azure AD B2C avec Microsoft Graph

Microsoft Graph vous permet de gérer les ressources dans votre répertoire Azure AD B2C. Les opérations suivantes de l’API Microsoft Graph sont prises en charge pour la gestion de ressources Azure AD B2C, dont les utilisateurs, les fournisseurs d’identité, les flux d’utilisateurs, les stratégies personnalisées et les clés de stratégies. Chaque lien dans les sections suivantes cible la page correspondante dans la référence de l’API Microsoft Graph pour cette opération.

Notes

Vous pouvez également créer par programmation un répertoire Azure AD B2C, ainsi que la ressource Azure correspondante liée à un abonnement Azure. Cette fonctionnalité n’est pas exposée via l’API Microsoft Graph, mais via l’API REST Azure. Pour plus d’informations, consultez Locataires B2C – Créer.

Regardez cette vidéo pour en savoir plus sur la migration des utilisateurs Azure AD B2C à l’aide de l’API Microsoft Graph.

Prérequis

  • Pour utiliser l’API MS Graph et interagir avec les ressources de votre locataire Azure AD B2C, vous avez besoin d’une inscription d’application qui accorde les autorisations nécessaires. Suivez les étapes décrites dans l’article Inscrire une application Microsoft Graph pour créer une inscription d’application que votre application de gestion peut utiliser.

User Management

Notes

Azure AD B2C ne prend actuellement pas en charge les fonctionnalités de requête avancées sur les objets annuaire. Cela signifie qu’il n’existe aucune prise en charge pour $count, les paramètres de requête $search et les opérateurs Not (not), Not equals (ne) et Ends with (endsWith) dans le paramètre de requête $filter. Pour plus d’informations, consultez paramètres de requête dans Microsoft Graph et fonctionnalités de requête avancées dans Microsoft Graph.

Gestion des numéros de téléphone des utilisateurs

Numéro de téléphone pouvant être utilisé par un utilisateur pour se connecter à l’aide de SMS ou appels vocauxou de l’authentification multifacteur. Pour plus d’informations, consultez Méthodes d’authentification multi-facteur Microsoft Entra par API.

Notez que l’opération list retourne uniquement les numéros de téléphone activés. Le numéro de téléphone suivant doit être activé pour pouvoir être utilisé avec les opérations « list ».

Enable phone sign-in

Remarque

Un numéro de téléphone correctement représenté est stocké avec un espace entre l’indicatif du pays et le numéro de téléphone. Par défaut, le service Azure AD B2C n’ajoute pas cet espace.

Adresse e-mail de réinitialisation de mot de passe en libre-service

Adresse e-mail pouvant être utilisée par un compte de connexion nom_utilisateur pour réinitialiser le mot de passe. Pour plus d’informations, consultez Méthodes d’authentification multi-facteur Microsoft Entra par API.

Méthode d’authentification par jeton OATH logiciel

Un jeton OATH logiciel est un générateur de nombres basés sur logiciel qui utilise la norme de mot de passe à usage unique (TOTP) OATH, basée sur le temps, pour l’authentification multifacteur par le biais d’une application authentificateur. Utilisez l’API Microsoft Graph pour gérer un jeton de serment logiciel inscrit auprès d’un utilisateur :

Fournisseurs d’identité

Gérez les fournisseurs d’identité disponibles pour vos flux d’utilisateurs dans votre locataire Azure AD B2C.

Flux utilisateur (bêta)

Configurez des stratégies prédéfinies pour l’inscription, la connexion, l’inscription et la connexion combinées, la réinitialisation de mot de passe et la mise à jour de profil.

Méthodes d’authentification de flux d’utilisateur (bêta)

Choisissez un mécanisme pour permettre aux utilisateurs de s’inscrire via des comptes locaux. Les comptes locaux sont les comptes pour lesquels Azure AD B2C effectue l’assertion d’identité. Pour plus d’informations, consultez Type de ressource b2cAuthenticationMethodsPolicy.

Stratégies personnalisées (bêta)

Les opérations suivantes vous permettent de gérer vos stratégies d’infrastructure de confiance Azure AD B2C, appelées stratégies personnalisées.

Clés de stratégie (bêta)

L’infrastructure Identity Experience Framework stocke les secrets référencés dans une stratégie personnalisée pour établir la confiance entre des composants. Ces secrets peuvent être des clés/valeurs symétriques ou asymétriques. Dans le Portail Azure, ces entités sont affichées en tant que clés de stratégies.

La ressource de niveau supérieur pour les clés de stratégies dans l’API Microsoft Graph est le jeu de clés de l’infrastructure de confiance. Chaque jeu de clés contient au moins une clé. Pour créer une clé, commencez par créer un jeu de clés vide, puis générez une clé dans celui-ci. Vous pouvez créer un secret manuel, charger un certificat ou une clé PKCS12. La clé peut être un secret généré, une chaîne (par exemple, un secret de l’application Facebook) ou un certificat que vous chargez. Si un jeu de clés compte plusieurs clés, une seule d’entre elles est active.

Jeu de clés de stratégie d’infrastructure de confiance

Clé de stratégie d’infrastructure de confiance

Applications

Propriétés d’extension d’application (extension d’annuaire)

Les propriétés d’extension d’application sont également appelées extensions d’annuaire ou extensions Microsoft Entra. Pour les gérer dans Azure AD B2C, utilisez le type de ressource identityUserFlowAttribute et ses méthodes associées.

Vous pouvez stocker jusqu’à 100 valeurs d’extension d’annuaire par utilisateur. Pour gérer les propriétés d’extension d’annuaire pour un utilisateur, utilisez les API utilisateur suivantes dans Microsoft Graph.

  • Mettre à jour un utilisateur : pour écrire ou supprimer la valeur de la propriété d’extension d’annuaire de l’objet utilisateur.
  • Obtenir un utilisateur : pour récupérer la valeur de l’extension d’annuaire pour l’utilisateur. La propriété est retournée par défaut via le point de terminaison beta, mais uniquement sur $select via le point de terminaison v1.0.

Pour des flux d’utilisateurs, ces propriétés d’extension sont gérées à l’aide du portail Azure. Pour des stratégies personnalisées, Azure AD B2C crée la propriété pour vous la première fois que la stratégie écrit une valeur dans la propriété d’extension.

Remarque

Dans Microsoft Entra UD, les extensions d’annuaire sont gérées via le type de ressource extensionProperty et ses méthodes associées. Toutefois, étant donné qu’elles sont utilisées dans B2C via l’application b2c-extensions-app qui ne doit pas être mise à jour, elles sont gérées dans Azure AD B2C à l’aide du type de ressource identityUserFlowAttribute et ses méthodes associées.

Utilisation du locataire

Utilisez l’API Obtenir les détails de l’organisation pour obtenir le quota de taille de votre annuaire. Vous devez ajouter le paramètre de requête $select comme indiqué dans la requête HTTP suivante :

GET https://graph.microsoft.com/v1.0/organization/organization-id?$select=directorySizeQuota

Remplacez organization-id par l’ID de votre organisation ou de votre locataire.

La réponse à la requête ci-dessus est similaire à l’extrait de code JSON suivant :

{
    "directorySizeQuota": {
        "used": 156,
        "total": 1250000
    }
}

Journaux d’audit

Pour plus d’informations sur l’accès aux journaux d’audit Azure AD B2C, consultez Accès aux journaux d’audit Azure AD B2C.

Accès conditionnel

Récupérer ou restaurer des utilisateurs et des applications supprimés

Les utilisateurs et applications supprimés peuvent être restaurés seulement s’ils ont été supprimés au cours des 30 derniers jours.

Comment gérer Microsoft Graph par programmation

Lorsque vous souhaitez gérer Microsoft Graph, vous pouvez le faire comme pour une application à l’aide des autorisations de l’application, ou vous pouvez utiliser des autorisations déléguées. Pour ces autorisations déléguées, l’utilisateur ou un administrateur consent aux autorisations demandées par l’application. L’application se voit déléguer la permission d’agir en tant qu’utilisateur connecté lorsqu’elle effectue des appels vers la ressource cible. Les autorisations d’application sont utilisées par les applications qui n’ont pas besoin d’un utilisateur connecté présent et nécessitent donc des autorisations d’application. C’est pourquoi seuls les administrateurs peuvent donner leur consentement pour les autorisations de l’application.

Notes

Les autorisations déléguées pour les utilisateurs qui se connectent par le biais de flux d’utilisateurs ou de stratégies personnalisées ne peuvent pas être utilisées sur des autorisations déléguées pour l’API Microsoft Graph.

Exemple de code : Comment gérer les comptes d’utilisateurs par programmation

Cet exemple de code est une application console .NET Core qui utilise le SDK Microsoft Graph pour interagir avec l’API Microsoft Graph. Son code illustre comment appeler l’API pour gérer par programmation les utilisateurs dans un locataire Azure AD B2C. Vous pouvez télécharger l’archive de l’exemple (*.zip), parcourir le dépôt sur GitHub ou cloner le dépôt :

git clone https://github.com/Azure-Samples/ms-identity-dotnetcore-b2c-account-management.git

Une fois que vous avez obtenu l’exemple de code, configurez-le pour votre environnement, puis générez le projet :

  1. Ouvrez le projet dans Visual Studio ou dans Visual Studio Code.

  2. Ouvrez src/appsettings.json.

  3. Dans la section appSettings, remplacez your-b2c-tenant par le nom de votre locataire et Application (client) ID et Client secret par les valeurs de l’inscription de votre application de gestion. Pour plus d’informations, consultez Inscrire une application Microsoft Graph.

  4. Ouvrez une fenêtre de console dans votre clone local du dépôt, accédez au répertoire src, puis générez le projet :

    cd src
    dotnet build
    
  5. Exécutez l’application avec la commande dotnet :

    dotnet bin/Debug/netcoreapp3.1/b2c-ms-graph.dll
    

L’application affiche une liste de commandes que vous pouvez exécuter. Par exemple, obtenir tous les utilisateurs, obtenir un seul utilisateur, supprimer un utilisateur, mettre à jour le mot de passe d’un utilisateur et importer en bloc.

Notes

Pour que l’application mette à jour les mots de passe des comptes d’utilisateur, vous devez accorder le rôle Administrateur d’utilisateurs à l’application.

Considérations sur le code

L’exemple de code utilise le kit SDK Microsoft Graph, qui est conçu pour simplifier la création d’applications qualitatives, efficaces et résilientes qui accèdent à Microsoft Graph.

Toute requête envoyée à l’API Microsoft Graph nécessite un jeton d’accès pour l’authentification. La solution utilise le package NuGet Microsoft.Graph.Auth qui fournit un wrapper basé sur un scénario d’authentification de la bibliothèque d’authentification Microsoft (MSAL) à utiliser avec le SDK Microsoft Graph.

La méthode RunAsync dans le fichier Program.cs :

  1. Lit les paramètres d’application à partir du fichier appsettings.json
  2. Initialise le fournisseur d’authentification en utilisant le flux d’octroi d’informations d’identification du client OAuth 2.0. Avec le flux d’octroi d’informations d’identification du client, l’application est en mesure d’obtenir un jeton d’accès pour appeler l’API Microsoft Graph.
  3. Configure le client du service Microsoft Graph avec le fournisseur d’authentification :
// Read application settings from appsettings.json (tenant ID, app ID, client secret, etc.)
AppSettings config = AppSettingsFile.ReadFromJsonFile();

// Initialize the client credential auth provider
var scopes = new[] { "https://graph.microsoft.com/.default" };
var clientSecretCredential = new ClientSecretCredential(config.TenantId, config.AppId, config.ClientSecret);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);

Le GraphServiceClient initialisée est ensuite utilisé dans UserService.cs pour effectuer les opérations de gestion des utilisateurs. Par exemple, pour obtenir une liste des comptes d’utilisateur dans le locataire :

public static async Task ListUsers(GraphServiceClient graphClient)
{
    Console.WriteLine("Getting list of users...");

    try
    {
        // Get all users
        var users = await graphClient.Users
            .Request()
            .Select(e => new
            {
                e.DisplayName,
                e.Id,
                e.Identities
            })
            .GetAsync();

        // Iterate over all the users in the directory
        var pageIterator = PageIterator<User>
            .CreatePageIterator(
                graphClient,
                users,
                // Callback executed for each user in the collection
                (user) =>
                {
                    Console.WriteLine(JsonSerializer.Serialize(user));
                    return true;
                },
                // Used to configure subsequent page requests
                (req) =>
                {
                    Console.WriteLine($"Reading next page of users...");
                    return req;
                }
            );

        await pageIterator.IterateAsync();
    }
    catch (Exception ex)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine(ex.Message);
        Console.ResetColor();
    }
}

Faire des appels d’API en utilisant le SDK Microsoft Graph contient des informations sur la façon de lire et d’écrire des informations à partir de Microsoft Graph, d’utiliser $select pour contrôler les propriétés retournées, de fournir des paramètres de requête personnalisés, et d’utiliser les paramètres de requête $filter et $orderBy.

Étapes suivantes