Gestire Azure AD B2C con Microsoft Graph

Microsoft Graph consente di gestire le risorse nella directory di Azure AD B2C. Le operazioni seguenti dell'API Microsoft Graph sono supportate per la gestione delle risorse di Azure AD B2C, inclusi utenti, provider di identità, flussi utente, criteri personalizzati e chiavi dei criteri. Ogni collegamento nelle sezioni seguenti è destinato alla pagina corrispondente all'interno delle informazioni di riferimento sull'API Microsoft Graph per tale operazione.

Nota

È anche possibile creare una directory di Azure AD B2C a livello di codice, insieme alla risorsa di Azure corrispondente collegata a una sottoscrizione di Azure. Questa funzionalità non viene esposta tramite l'API Microsoft Graph, ma tramite l'API REST di Azure. Per altre informazioni, vedere Tenant B2C - Creare.

Guardare questo video per informazioni sulla migrazione degli utenti di Azure AD B2C tramite l'API Microsoft Graph.

Prerequisiti

  • Per usare l'API Microsoft Graph e interagire con le risorse nel tenant di Azure AD B2C, è necessaria una registrazione dell'applicazione che concede le autorizzazioni a tale scopo. Seguire la procedura descritta nell'articolo Registrare un'applicazione Microsoft Graph per creare una registrazione dell'applicazione che può essere usata dall'applicazione di gestione.

Gestione utente

Nota

Azure AD B2C attualmente non supporta funzionalità di query avanzate sugli oggetti directory. Ciò significa che non è disponibile alcun supporto per $count, $search i parametri di query e Not (not), Non è uguale a (ne) e termina con gli operatori (endsWith) nel $filter parametro di query. Per altre informazioni, vedere Parametri di query in Microsoft Graph e funzionalità di query avanzate in Microsoft Graph.

Gestione dei numeri di telefono utente

Numero di telefono che può essere usato da un utente per accedere tramite SMS o chiamate vocali o l'autenticazione a più fattori. Per altre informazioni, vedere API dei metodi di autenticazione di Microsoft Entra.

Nota, l'operazione di elenco restituisce solo numeri di telefono abilitati. Il numero di telefono seguente deve essere abilitato per l'uso con le operazioni di elenco.

Enable phone sign-in

Nota

Un numero di telefono rappresentato correttamente viene archiviato con uno spazio tra il codice paese e il numero di telefono. Il servizio Azure AD B2C attualmente non aggiunge questo spazio per impostazione predefinita.

Indirizzo di posta elettronica per la reimpostazione della password self-service

Indirizzo di posta elettronica che può essere usato da un account di accesso con nome utente per reimpostare la password. Per altre informazioni, vedere API dei metodi di autenticazione di Microsoft Entra.

Metodo di autenticazione token OATH software

Un token OATH software è un generatore di numeri basato su software che usa lo standard OATH basato su password monouso (TOTP) per l'autenticazione a più fattori tramite un'app di autenticazione. Usare l'API Microsoft Graph per gestire un token OATH software registrato a un utente:

Provider di identità

Gestire i provider di identità disponibili per i flussi utente nel tenant di Azure AD B2C.

Flusso utente (beta)

Configurare criteri predefiniti per l'iscrizione, l'accesso, l'iscrizione combinata e l'accesso, la reimpostazione della password e l'aggiornamento del profilo.

Metodi di autenticazione del flusso utente (beta)

Scegliere un meccanismo per consentire agli utenti di registrarsi tramite account locali. Gli account locali sono gli account in cui Azure AD B2C esegue l'asserzione di identità. Per altre informazioni, vedere b2cAuthenticationMethodsPolicy resource type (Tipo di risorsa b2cAuthenticationMethodsPolicy).

Criteri personalizzati (beta)

Le operazioni seguenti consentono di gestire i criteri di Azure AD B2C Trust Framework, noti come criteri personalizzati.

Chiavi dei criteri (beta)

Il framework dell'esperienza di gestione delle identità archivia i segreti a cui si fa riferimento in un criterio personalizzato per stabilire un trust tra i componenti. Questi segreti possono essere chiavi/valori simmetrici o asimmetrici. Nella portale di Azure queste entità vengono visualizzate come chiavi dei criteri.

La risorsa di primo livello per le chiavi dei criteri nell'API Microsoft Graph è il Keyset framework attendibile. Ogni keyset contiene almeno una chiave. Per creare una chiave, creare prima un keyset vuoto e quindi generare una chiave nel keyset. È possibile creare un segreto manuale, caricare un certificato o una chiave PKCS12. La chiave può essere un segreto generato, una stringa (ad esempio il segreto dell'applicazione Facebook) o un certificato caricato. Se un keyset ha più chiavi, solo una delle chiavi è attiva.

Set di chiavi dei criteri trust framework

Chiave dei criteri trust framework

Applicazioni

Proprietà dell'estensione dell'applicazione (estensione della directory)

Le proprietà dell'estensione dell'applicazione sono note anche come estensioni directory o Microsoft Entra. Per gestirli in Azure AD B2C, usare il tipo di risorsa identityUserFlowAttribute e i relativi metodi associati.

È possibile archiviare fino a 100 valori di estensione della directory per utente. Per gestire le proprietà dell'estensione della directory per un utente, usare le API utente seguenti in Microsoft Graph.

  • Aggiornare l'utente: per scrivere o rimuovere il valore della proprietà dell'estensione della directory dall'oggetto utente.
  • Ottenere un utente: per recuperare il valore dell'estensione della directory per l'utente. La proprietà verrà restituita per impostazione predefinita tramite l'endpoint beta , ma solo su $select tramite l'endpoint v1.0 .

Per i flussi utente, queste proprietà di estensione vengono gestite usando il portale di Azure. Per i criteri personalizzati, Azure AD B2C crea automaticamente la proprietà , la prima volta che il criterio scrive un valore nella proprietà dell'estensione.

Nota

In Microsoft Entra ID le estensioni della directory vengono gestite tramite il tipo di risorsa extensionProperty e i relativi metodi associati. Tuttavia, poiché vengono usati in B2C tramite l'app b2c-extensions-app che non deve essere aggiornata, vengono gestiti in Azure AD B2C usando il tipo di risorsa identityUserFlowAttribute e i relativi metodi associati.

Utilizzo del tenant

Usare l'API Ottenere i dettagli dell'organizzazione per ottenere la quota delle dimensioni della directory. È necessario aggiungere il $select parametro di query come illustrato nella richiesta HTTP seguente:

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

Sostituire organization-id con l'organizzazione o l'ID tenant.

La risposta alla richiesta precedente è simile al frammento JSON seguente:

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

Log di audit

Per altre informazioni sull'accesso ai log di controllo di Azure AD B2C, vedere Accesso ai log di controllo di Azure AD B2C.

Accesso condizionale

Recuperare o ripristinare utenti e applicazioni eliminati

Gli utenti e le app eliminati possono essere ripristinati solo se sono stati eliminati negli ultimi 30 giorni.

Come gestire Microsoft Graph a livello di codice

Quando si vuole gestire Microsoft Graph, è possibile farlo come applicazione usando le autorizzazioni dell'applicazione oppure è possibile usare le autorizzazioni delegate. Per le autorizzazioni delegate, l'utente o un amministratore acconsente alle autorizzazioni richieste dall'app. L'app viene delegata con l'autorizzazione ad agire come utente connesso quando effettua chiamate alla risorsa di destinazione. Le autorizzazioni dell'applicazione vengono usate dalle app che non richiedono un utente connesso presente e richiedono quindi le autorizzazioni dell'applicazione. Per questo motivo, solo gli amministratori possono fornire il consenso alle autorizzazioni dell'applicazione.

Nota

Le autorizzazioni delegate per gli utenti che accedono tramite flussi utente o criteri personalizzati non possono essere usate per le autorizzazioni delegate per l'API Microsoft Graph.

Esempio di codice: Come gestire gli account utente a livello di codice

Questo esempio di codice è un'applicazione console .NET Core che usa Microsoft Graph SDK per interagire con l'API Microsoft Graph. Il codice illustra come chiamare l'API per gestire gli utenti a livello di codice in un tenant di Azure AD B2C. È possibile scaricare l'archivio di esempio (*.zip), esplorare il repository in GitHub o clonare il repository:

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

Dopo aver ottenuto l'esempio di codice, configurarlo per l'ambiente e quindi compilare il progetto:

  1. Aprire il progetto in Visual Studio o Visual Studio Code.

  2. src/appsettings.json aperti.

  3. appSettings Nella sezione sostituire your-b2c-tenant con il nome del tenant e Application (client) IDClient secret con i valori per la registrazione dell'applicazione di gestione. Per altre informazioni, vedere Registrare un'applicazione Microsoft Graph.

  4. Aprire una finestra della console all'interno del clone locale del repository, passare alla src directory e quindi compilare il progetto:

    cd src
    dotnet build
    
  5. Eseguire l'applicazione con il comando dotnet:

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

L'applicazione visualizza un elenco di comandi che è possibile eseguire. Ad esempio, ottenere tutti gli utenti, ottenere un singolo utente, eliminare un utente, aggiornare la password di un utente e importare in blocco.

Nota

Affinché l'applicazione aggiorni le password dell'account utente, è necessario concedere il ruolo di amministratore utente all'applicazione.

Discussione sul codice

Il codice di esempio usa Microsoft Graph SDK, progettato per semplificare la creazione di applicazioni di alta qualità, efficienti e resilienti che accedono a Microsoft Graph.

Qualsiasi richiesta all'API Microsoft Graph richiede un token di accesso per l'autenticazione. La soluzione usa il pacchetto NuGet Microsoft.Graph.Auth che fornisce un wrapper basato su scenari di autenticazione di Microsoft Authentication Library (MSAL) da usare con Microsoft Graph SDK.

Metodo RunAsync nel file Program.cs :

  1. Legge le impostazioni dell'applicazione dal file appsettings.json
  2. Inizializza il provider di autenticazione usando il flusso di concessione delle credenziali client OAuth 2.0. Con il flusso di concessione delle credenziali client, l'app è in grado di ottenere un token di accesso per chiamare l'API Microsoft Graph.
  3. Configura il client del servizio Microsoft Graph con il provider di autenticazione:
// 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);

GraphServiceClient inizializzato viene quindi usato in UserService.cs per eseguire le operazioni di gestione degli utenti. Ad esempio, ottenere un elenco degli account utente nel tenant:

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();
    }
}

Effettuare chiamate API usando gli SDK di Microsoft Graph include informazioni su come leggere e scrivere informazioni da Microsoft Graph, usare $select per controllare le proprietà restituite, fornire parametri di query personalizzati e usare i $filter parametri di query e $orderBy .

Passaggi successivi