Hantera Azure AD B2C med Microsoft Graph

Med Microsoft Graph kan du hantera resurser i din Azure AD B2C-katalog. Följande Microsoft Graph API-åtgärder stöds för hantering av Azure AD B2C-resurser, inklusive användare, identitetsprovidrar, användarflöden, anpassade principer och principnycklar. Varje länk i följande avsnitt riktar sig till motsvarande sida i Microsoft Graph API-referensen för den åtgärden.

Kommentar

Du kan också programmatiskt skapa en Azure AD B2C-katalog tillsammans med motsvarande Azure-resurs som är länkad till en Azure-prenumeration. Den här funktionen exponeras inte via Microsoft Graph API, utan via Azure REST API. Mer information finns i B2C-klienter – Skapa.

Titta på den här videon om du vill veta mer om migrering av Azure AD B2C-användare med hjälp av Microsoft Graph API.

Förutsättningar

  • Om du vill använda MS Graph API och interagera med resurser i din Azure AD B2C-klientorganisation behöver du en programregistrering som ger behörighet att göra det. Följ stegen i artikeln Registrera ett Microsoft Graph-program för att skapa en programregistrering som ditt hanteringsprogram kan använda.

Användarhantering

Kommentar

Azure AD B2C stöder för närvarande inte avancerade frågefunktioner för katalogobjekt. Det innebär att det inte finns något stöd för $count, $search frågeparametrar och Inte (not), Inte lika med (ne) och Slutar med (endsWith) operatorer i $filter frågeparametern. Mer information finns i frågeparametrar i Microsoft Graph och avancerade frågefunktioner i Microsoft Graph.

Hantering av användartelefonnummer

Ett telefonnummer som kan användas av en användare för att logga in med SMS - eller röstsamtal eller multifaktorautentisering. Mer information finns i API för Microsoft Entra-autentiseringsmetoder.

Observera att liståtgärden endast returnerar aktiverade telefonnummer. Följande telefonnummer ska vara aktiverat för användning med liståtgärderna.

Enable phone sign-in

Kommentar

Ett korrekt representerat telefonnummer lagras med ett utrymme mellan landskoden och telefonnumret. Azure AD B2C-tjänsten lägger för närvarande inte till det här utrymmet som standard.

E-postadress för lösenordsåterställning via självbetjäning

En e-postadress som kan användas av ett inloggningskonto för användarnamn för att återställa lösenordet. Mer information finns i API för Microsoft Entra-autentiseringsmetoder.

Autentiseringsmetod för OATH-token för programvara

En OATH-token för programvara är en programvarubaserad nummergenerator som använder TOTP-standarden (OATH time-based one-time password) för multifaktorautentisering via en autentiseringsapp. Använd Microsoft Graph API för att hantera en OATH-programvarutoken som registrerats för en användare:

Identitetsprovidrar

Hantera identitetsprovidrar som är tillgängliga för dina användarflöden i din Azure AD B2C-klientorganisation.

Användarflöde (beta)

Konfigurera fördefinierade principer för registrering, inloggning, kombinerad registrering och inloggning, lösenordsåterställning och profiluppdatering.

Autentiseringsmetoder för användarflöde (beta)

Välj en mekanism för att låta användare registrera sig via lokala konton. Lokala konton är de konton där Azure AD B2C utför identitetskontrollerna. Mer information finns i resurstypen b2cAuthenticationMethodsPolicy.

Anpassade principer (beta)

Med följande åtgärder kan du hantera dina Azure AD B2C Trust Framework-principer, så kallade anpassade principer.

Principnycklar (beta)

Identity Experience Framework lagrar hemligheterna som refereras i en anpassad princip för att upprätta förtroende mellan komponenter. Dessa hemligheter kan vara symmetriska eller asymmetriska nycklar/värden. I Azure-portalen visas dessa entiteter som principnycklar.

Resursen på den översta nivån för principnycklar i Microsoft Graph-API:et är den betrodda ramverksnyckeluppsättningen. Varje nyckeluppsättning innehåller minst en nyckel. Skapa en nyckel genom att först skapa en tom nyckeluppsättning och sedan generera en nyckel i nyckeluppsättningen. Du kan skapa en manuell hemlighet, ladda upp ett certifikat eller en PKCS12-nyckel. Nyckeln kan vara en genererad hemlighet, en sträng (till exempel Facebook-programhemligheten) eller ett certifikat som du laddar upp. Om en nyckeluppsättning har flera nycklar är bara en av nycklarna aktiv.

Principnyckeluppsättning för Trust Framework

Principnyckel för Trust Framework

Appar

Egenskaper för programtillägg (katalogtillägg)

Egenskaper för programtillägg kallas även för katalog- eller Microsoft Entra-tillägg. Om du vill hantera dem i Azure AD B2C använder du resurstypen identityUserFlowAttribute och dess associerade metoder.

Du kan lagra upp till 100 katalogtilläggsvärden per användare. Om du vill hantera egenskaperna för katalogtillägget för en användare använder du följande användar-API:er i Microsoft Graph.

  • Uppdatera användare: Om du vill skriva eller ta bort värdet för egenskapen för katalogtillägget från användarobjektet.
  • Hämta en användare: Hämta värdet för katalogtillägget för användaren. Egenskapen returneras som standard via beta slutpunkten, men endast på $select via v1.0 slutpunkten.

För användarflöden hanteras dessa tilläggsegenskaper med hjälp av Azure-portalen. För anpassade principer skapar Azure AD B2C egenskapen åt dig, första gången principen skriver ett värde till tilläggsegenskapen.

Kommentar

I Microsoft Entra-ID hanteras katalogtillägg via resurstypen extensionProperty och dess associerade metoder. Men eftersom de används i B2C via b2c-extensions-app appen som inte bör uppdateras, hanteras de i Azure AD B2C med resurstypen identityUserFlowAttribute och dess associerade metoder.

Klientorganisationsanvändning

Använd API:et Hämta organisationsinformation för att hämta din katalogstorlekskvot. Du måste lägga till frågeparametern $select enligt följande HTTP-begäran:

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

Ersätt organization-id med ditt organisations- eller klientorganisations-ID.

Svaret på ovanstående begäran liknar följande JSON-kodfragment:

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

Granskningsloggar

Mer information om hur du kommer åt Azure AD B2C-granskningsloggar finns i Komma åt Azure AD B2C-granskningsloggar.

Villkorlig åtkomst

Hämta eller återställa borttagna användare och program

Borttagna användare och appar kan bara återställas om de har tagits bort under de senaste 30 dagarna.

Så här hanterar du Microsoft Graph programmatiskt

När du vill hantera Microsoft Graph kan du antingen göra det som programmet med hjälp av programbehörigheterna eller använda delegerade behörigheter. För delegerade behörigheter godkänner antingen användaren eller en administratör de behörigheter som appen begär. Appen delegeras med behörighet att agera som en inloggad användare vid anrop till målresursen. Programbehörigheter används av appar som inte kräver en inloggad användare som finns och därmed kräver programbehörigheter. Därför kan endast administratörer godkänna programbehörigheter.

Kommentar

Delegerade behörigheter för användare som loggar in via användarflöden eller anpassade principer kan inte användas mot delegerade behörigheter för Microsoft Graph API.

Kodexempel: Hantera användarkonton programmatiskt

Det här kodexemplet är ett .NET Core-konsolprogram som använder Microsoft Graph SDK för att interagera med Microsoft Graph API. Koden visar hur du anropar API:et för att programmatiskt hantera användare i en Azure AD B2C-klientorganisation. Du kan ladda ned exempelarkivet (*.zip), bläddra på lagringsplatsen på GitHub eller klona lagringsplatsen:

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

När du har fått kodexemplet konfigurerar du det för din miljö och skapar sedan projektet:

  1. Öppna projektet i Visual Studio eller Visual Studio Code.

  2. Öppna src/appsettings.json.

  3. I avsnittet appSettings ersätter du your-b2c-tenant med namnet på din klient och Application (client) IDClient secret med värdena för din registrering av hanteringsprogram. Mer information finns i Registrera ett Microsoft Graph-program.

  4. Öppna ett konsolfönster i din lokala klon av lagringsplatsen, växla till src katalogen och skapa sedan projektet:

    cd src
    dotnet build
    
  5. Kör programmet med dotnet kommandot :

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

Programmet visar en lista över kommandon som du kan köra. Hämta till exempel alla användare, hämta en enskild användare, ta bort en användare, uppdatera en användares lösenord och massimportera.

Kommentar

För att programmet ska kunna uppdatera lösenord för användarkontot måste du ge programmet rollen som användaradministratör .

Koddiskussion

Exempelkoden använder Microsoft Graph SDK, som är utformat för att förenkla skapandet av högkvalitativa, effektiva och motståndskraftiga program som har åtkomst till Microsoft Graph.

Alla förfrågningar till Microsoft Graph API kräver en åtkomsttoken för autentisering. Lösningen använder NuGet-paketet Microsoft.Graph.Auth som tillhandahåller en autentiseringsscenariobaserad omslutning av Microsoft Authentication Library (MSAL) för användning med Microsoft Graph SDK.

Metoden RunAsync i filen Program.cs :

  1. Läser programinställningar från filen appsettings.json
  2. Initierar autentiseringsprovidern med hjälp av beviljandeflödet för OAuth 2.0-klientautentiseringsuppgifter . Med flödet för beviljande av klientautentiseringsuppgifter kan appen hämta en åtkomsttoken för att anropa Microsoft Graph-API:et.
  3. Konfigurerar Microsoft Graph-tjänstklienten med autentiseringsprovidern:
// 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);

Den initierade GraphServiceClient används sedan i UserService.cs för att utföra användarhanteringsåtgärderna. Du kan till exempel hämta en lista över användarkontona i klientorganisationen:

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

Gör API-anrop med hjälp av Microsoft Graph SDK:er innehåller information om hur du läser och skriver information från Microsoft Graph, använder $select för att styra de egenskaper som returneras, ange anpassade frågeparametrar och använda $filter frågeparametrarna och $orderBy .

Nästa steg