Verwalten von Azure AD B2C mit Microsoft Graph

Mit Microsoft Graph können Sie Ressourcen in Ihrem Azure AD B2C-Verzeichnis verwalten. In der Microsoft Graph-API werden die folgenden Vorgänge für die Verwaltung von Azure AD B2C-Ressourcen unterstützt (einschließlich Benutzern, Identitätsanbietern, Benutzerflows, benutzerdefinierten Richtlinien und Richtlinienschlüsseln). Jeder Link in den folgenden Abschnitten bezieht sich auf die entsprechende Seite in der Referenz zur Microsoft Graph-API für diesen Vorgang.

Hinweis

Sie können auch programmgesteuert ein Azure AD B2C-Verzeichnis selbst erstellen, zusammen mit der entsprechenden Azure-Ressource, die mit einem Azure-Abonnement verknüpft ist. Diese Funktionalität wird nicht über die Microsoft Graph-API bereitgestellt, sondern über die Azure-REST-API. Weitere Informationen finden Sie unter B2C-Mandanten: Erstellen.

Sehen Sie sich dieses Video an, um mehr über die Migration von Azure AD B2C-Benutzern mithilfe der Microsoft Graph API zu erfahren.

Voraussetzungen

  • Zum Verwenden der MS Graph-API und Interagieren mit Ressourcen auf Ihrem Azure AD B2C-Mandanten benötigen Sie eine Anwendungsregistrierung, bei der die erforderlichen Berechtigungen gewährt werden. Führen Sie die im Artikel Registrieren einer Microsoft Graph-Anwendung aufgeführten Schritte aus, um eine Anwendungsregistrierung zu erstellen, die von Ihrer Verwaltungsanwendung verwendet werden kann.

Benutzerverwaltung

Hinweis

Azure AD B2C unterstützt derzeit keine erweiterten Abfragefunktionen für Verzeichnisobjekte. Dies bedeutet, dass keine Unterstützung für $count, $searchAbfrageparameter und Not (not), Not equals (ne) und Ends with (endsWith) im Abfrageparameter $filter gibt. Weitere Informationen finden Sie unter Abfrageparameter in Microsoft Graph und erweiterte Abfragefunktionen in Microsoft Graph.

Verwaltung der Telefonnummer des Benutzers

Eine Telefonnummer, mit der sich ein Benutzer per SMS oder Sprachanruf oder per mehrstufiger Authentifizierung anmelden kann. Weitere Informationen finden Sie unter Authentifizierungsmethoden-API von Microsoft Entra.

Hinweis: Durch den Auflistungsvorgang werden nur aktivierte Telefonnummern zurückgegeben. Die folgende Telefonnummer muss aktiviert werden, um mit den Auflistungsvorgängen verwendet werden zu können.

Enable phone sign-in

Hinweis

Eine ordnungsgemäß dargestellte Telefonnummer wird mit einem Leerzeichen zwischen Landeskennzahl und Telefonnummer gespeichert. Der Azure AD B2C-Dienst fügt dieses Leerzeichen derzeit nicht standardmäßig hinzu.

E-Mail-Adresse für Self-Service-Kennwortzurücksetzung

Eine E-Mail-Adresse, die von einem Konto mit benutzernamenbasierter Anmeldung verwendet werden kann, um das Kennwort zurückzusetzen. Weitere Informationen finden Sie unter Authentifizierungsmethoden-API von Microsoft Entra.

Authentifizierungsmethode für OATH-Softwaretoken

Ein OATH-Softwaretoken ist ein softwarebasierter Zahlengenerator, der den OATH-Standard für zeitbasierte Einmalkennwörter (Time-Based One-Time Password, TOTP) für die mehrstufige Authentifizierung über eine Authentifikator-App verwendet. Verwenden Sie die Microsoft Graph-API, um ein OATH-Softwaretoken zu verwalten, das für einen Benutzer registriert ist:

Identitätsanbieter

Verwalten Sie die Identitätsanbieter, die für die Benutzerflows in Ihrem Azure AD B2C-Mandanten verfügbar sind.

Benutzerflow (Beta)

Konfigurieren Sie vordefinierte Richtlinien für Registrierung, Anmeldung, kombinierte Registrierung und Anmeldung, Kennwortzurücksetzung und Profilaktualisierung.

Authentifizierungsmethoden mit Benutzerflow (Beta)

Wählen Sie einen Mechanismus, mit dem sich Benutzer über lokale Konten registrieren können. Lokale Konten sind die Konten, bei denen die Identitätsassertion von Azure AD B2C durchgeführt wird. Weitere Informationen finden Sie unter Ressourcentyp „b2cAuthenticationMethodsPolicy“.

Benutzerdefinierte Richtlinien (Beta)

Mit den folgenden Vorgängen können Sie Ihre Azure AD B2C-Vertrauensframeworkrichtlinien verwalten, die als benutzerdefinierte Richtlinien bezeichnet werden.

Richtlinienschlüssel (Beta)

Das Identity Experience Framework speichert die Geheimnisse, auf die in einer benutzerdefinierten Richtlinie verwiesen wird, um Vertrauen zwischen den Komponenten herzustellen. Diese Geheimnisse können symmetrische oder asymmetrische Schlüssel/Werte sein. Im Azure-Portal werden diese Entitäten als Richtlinienschlüssel angezeigt.

Die vorrangige Ressource für Richtlinienschlüssel in der Microsoft Graph-API ist das Vertrauensframework-Keyset. Jedes Keyset enthält mindestens einen Schlüssel. Zum Erstellen eines Schlüssels müssen Sie zunächst ein leeres Keyset erstellen und anschließend darin einen Schlüssel generieren. Sie können ein manuelles Geheimnis erstellen, ein Zertifikat hochladen oder einen PKCS12-Schlüssel erstellen. Der Schlüssel kann ein generiertes Geheimnis, eine Zeichenfolge (z. B. der geheime Facebook-Anwendungsschlüssel) oder ein von Ihnen hochgeladenes Zertifikat sein. Wenn ein Keyset mehrere Schlüssel enthält, ist immer nur einer der Schlüssel aktiv.

Vertrauensframeworkrichtlinie – Keyset

Vertrauensframeworkrichtlinie – Schlüssel

Anwendungen

Eigenschaften der Anwendungserweiterung (Verzeichniserweiterung)

Anwendungserweiterungseigenschaften werden auch als Verzeichnis- oder Microsoft Entra-Erweiterungen bezeichnet. Verwenden Sie zu ihrer Verwaltung in Azure AD B2C den Ressourcentyp „identityUserFlowAttribute“ und die zugehörigen Methoden.

Sie können bis zu 100 Verzeichniserweiterungswerte pro Benutzer speichern. Um die Verzeichniserweiterungseigenschaften für Benutzer zu verwalten, verwenden Sie die folgenden Benutzer-APIs in Microsoft Graph.

  • Aktualisieren eines Benutzers: Zum Schreiben oder Entfernen des Werts der Verzeichniserweiterungseigenschaft aus dem Benutzerobjekt.
  • Abrufen eines Benutzers: Zum Abrufen des Werts der Verzeichniserweiterung für den Benutzer. Die Eigenschaft wird standardmäßig über den beta-Endpunkt zurückgegeben, jedoch nur bei $select über den v1.0-Endpunkt.

Bei Benutzerflows werden diese Erweiterungseigenschaften mit dem Azure-Portal verwaltet. Bei benutzerdefinierten Richtlinien erstellt Azure AD B2C die Eigenschaft für Sie, wenn die Richtlinie zum ersten Mal einen Wert in die Erweiterungseigenschaft schreibt.

Hinweis

In Microsoft Entra ID werden Verzeichniserweiterungen über den Ressourcentyp „extensionProperty“ und die zugehörigen Methoden verwaltet. Da sie jedoch in B2C über die App b2c-extensions-app verwendet werden, die nicht aktualisiert werden soll, werden sie in Azure AD B2C mithilfe des Ressourcentyps „identityUserFlowAttribute“ und der zugehörigen Methoden verwaltet.

Mandantennutzung

Verwenden Sie die API zum Abrufen von Organisationsdetails, um Ihr Verzeichnisgrößenkontingent abzurufen. Sie müssen den Abfrageparameter $select hinzufügen, wie in der folgenden HTTP-Anforderung gezeigt:

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

Ersetzen Sie organization-id durch die ID Ihrer Organisation oder Ihres Mandanten.

Die Antwort auf die obige Anforderung sieht in etwa wie der folgende JSON-Ausschnitt aus:

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

Überwachungsprotokolle

Weitere Informationen zum Zugriff auf Azure AD B2C-Überwachungsprotokolle finden Sie unter Zugriff auf Azure AD B2C-Überwachungsprotokolle.

Bedingter Zugriff

Abrufen oder Wiederherstellen gelöschter Benutzer und Anwendungen

Gelöschte Benutzer und Anwendungen können nur wiederhergestellt werden, wenn sie innerhalb der letzten 30 Tage gelöscht wurden.

Gewusst wie: Programmgesteuertes Verwalten von Microsoft Graph

Wenn Sie Microsoft Graph verwalten möchten, können Sie dies entweder als Anwendung mit den Anwendungsberechtigungen oder mit den delegierten Berechtigungen ausführen. Bei den delegierten Berechtigungen stimmt entweder der Benutzer oder ein Administrator den von der App angeforderten Berechtigungen zu. An die App wird mit der Berechtigung delegiert, bei an die Zielressource gerichteten Aufrufen als angemeldeter Benutzer zu fungieren. Anwendungsberechtigungen werden von den Apps verwendet, für die kein angemeldeter Benutzer erforderlich ist und die daher Anwendungsberechtigungen erfordern. Aus diesem Grund können nur Administratoren den Anwendungsberechtigungen zustimmen.

Hinweis

Delegierte Berechtigungen für Benutzer*innen, die sich über Benutzerflows oder benutzerdefinierte Richtlinien anmelden, können nicht für delegierte Berechtigungen für die Microsoft Graph-API verwendet werden.

Codebeispiel: Programmgesteuertes Verwalten von Benutzerkonten

Dieses Codebeispiel ist eine .NET Core-Konsolenanwendung, die das Microsoft Graph SDK für die Interaktion mit der Microsoft Graph-API verwendet. Der Code veranschaulicht, wie die API aufgerufen wird, um Benutzer in einem Azure AD B2C-Mandanten programmgesteuert zu verwalten. Sie können das Beispielarchiv herunterladen (*.zip), das Repository auf GitHub durchsuchen oder das Repository klonen:

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

Nachdem Sie das Codebeispiel abgerufen haben, konfigurieren Sie es für Ihre Umgebung, und erstellen Sie dann das Projekt:

  1. Öffnen Sie das Projekt in Visual Studio oder Visual Studio Code.

  2. Öffnen Sie src/appsettings.json.

  3. Ersetzen Sie im Abschnitt appSettings die Zeichenfolge your-b2c-tenant durch den Namen Ihres Mandanten und Application (client) ID und Client secret durch die Werte für Ihre Registrierung der Verwaltungsanwendung. Weitere Informationen finden Sie unter Registrieren einer Microsoft Graph-Anwendung.

  4. Öffnen Sie in Ihrem lokalen Klon des Repositorys ein Konsolenfenster, wechseln Sie in das Verzeichnis src, und erstellen Sie dann das Projekt:

    cd src
    dotnet build
    
  5. Führen Sie die Anwendung mit Befehl dotnet aus:

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

Die Anwendung zeigt eine Liste der Befehle an, die Sie ausführen können. Beispielsweise können Sie alle Benutzer oder einen einzelnen Benutzer abrufen, einen Benutzer löschen, das Kennwort eines Benutzers aktualisieren und einen Massenimport ausführen.

Hinweis

Damit die Anwendung Benutzerkonten-Kennwörter aktualisiert, müssen Sie der Anwendung die Rolle des Benutzeradministrators erteilen.

Überlegungen zum Code

Der Beispielcode verwendet das Microsoft Graph SDK, das entwickelt wurde, um das Entwickeln hochwertiger, effizienter und robuster Anwendungen mit Zugriff auf Microsoft Graph zu vereinfachen.

Alle Anforderungen an die Microsoft Graph-API erfordern ein Zugriffstoken für die Authentifizierung. Die Lösung nutzt das NuGet-Paket Microsoft.Graph.Auth, das einen auf einem Authentifizierungsszenario basierenden Wrapper der Microsoft Authentication Library (MSAL) für die Verwendung mit dem Microsoft Graph SDK bereitstellt.

Die RunAsync-Methode in der Datei Program.cs führt Folgendes aus:

  1. Sie liest Anwendungseinstellungen aus der Datei appsettings.json
  2. Sie initialisiert den Authentifizierungsanbieter unter Verwendung des Gewährungsflows für OAuth 2.0-Clientanmeldeinformationen. Mit dem Gewährungsflow für Clientanmeldeinformationen kann die App ein Zugriffstoken abrufen, um die Microsoft Graph-API aufzurufen.
  3. Sie richtet den Microsoft Graph-Dienstclient mit dem Authentifizierungsanbieter ein:
// 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);

Der initialisierte GraphServiceClient wird dann in UserService.cs verwendet, um die Vorgänge zur Benutzerverwaltung auszuführen. Beispielsweise können Sie eine Liste der Benutzerkonten im Mandanten abrufen:

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

Das Ausführen von API-Aufrufen mithilfe der Microsoft Graph-SDKs umfasst Informationen zum Lesen und Schreiben von Informationen aus Microsoft Graph. Verwenden Sie $select, um die zurückgegebenen Eigenschaften zu steuern, benutzerdefinierte Abfrageparameter bereitzustellen und die Abfrageparameter $filter und $orderBy zu verwenden.

Nächste Schritte