Gerir o Azure AD B2C com o Microsoft Graph

O Microsoft Graph permite que você gerencie recursos em seu diretório do Azure AD B2C. As seguintes operações da API do Microsoft Graph têm suporte para o gerenciamento de recursos do Azure AD B2C, incluindo usuários, provedores de identidade, fluxos de usuários, políticas personalizadas e chaves de política. Cada link nas seções a seguir tem como destino a página correspondente dentro da referência da API do Microsoft Graph para essa operação.

Nota

Você também pode criar programaticamente um diretório B2C do Azure AD, juntamente com o recurso do Azure correspondente vinculado a uma assinatura do Azure. Essa funcionalidade não é exposta por meio da API do Microsoft Graph, mas por meio da API REST do Azure. Para obter mais informações, consulte Locatários B2C - Criar.

Assista a este vídeo para saber mais sobre a migração de usuários do Azure AD B2C usando a API do Microsoft Graph.

Pré-requisitos

Gestão de utilizadores

Nota

Atualmente, o Azure AD B2C não oferece suporte a recursos avançados de consulta em objetos de diretório. Isso significa que não há suporte para parâmetros de consulta , e Não (), Não é igual a $count() e Termina com (endsWithnotne) operadores no $filter parâmetro de consulta. $search Para obter mais informações, consulte parâmetros de consulta no Microsoft Graph e recursos avançados de consulta no Microsoft Graph.

Gestão do número de telefone do utilizador

Um número de telefone que pode ser usado por um usuário para entrar usando SMS ou chamadas de voz ou autenticação multifator. Para obter mais informações, consulte API de métodos de autenticação do Microsoft Entra.

Observe que a operação de lista retorna apenas números de telefone habilitados. O seguinte número de telefone deve ser habilitado para uso com as operações de lista.

Enable phone sign-in

Nota

Um número de telefone representado corretamente é armazenado com um espaço entre o código do país e o número de telefone. Atualmente, o serviço Azure AD B2C não adiciona esse espaço por padrão.

Endereço de e-mail de redefinição de senha de autoatendimento

Um endereço de e-mail que pode ser usado por uma conta de login de nome de usuário para redefinir a senha. Para obter mais informações, consulte API de métodos de autenticação do Microsoft Entra.

Método de autenticação de token OATH de software

Um token OATH de software é um gerador de números baseado em software que usa o padrão OATH time-based one-time password (TOTP) para autenticação multifator por meio de um aplicativo autenticador. Use a API do Microsoft Graph para gerenciar um token OATH de software registrado para um usuário:

Fornecedores de identidade

Gerencie os provedores de identidade disponíveis para seus fluxos de usuário em seu locatário do Azure AD B2C.

Fluxo de usuários (beta)

Configure políticas pré-criadas para inscrição, entrada, inscrição e entrada combinadas, redefinição de senha e atualização de perfil.

Métodos de autenticação de fluxo de usuário (beta)

Escolha um mecanismo para permitir que os utilizadores se registem através de contas locais. As contas locais são as contas em que o Azure AD B2C faz a declaração de identidade. Para obter mais informações, consulte b2cAuthenticationMethodsPolicy tipo de recurso.

Políticas personalizadas (beta)

As operações a seguir permitem que você gerencie suas políticas da Estrutura de Confiança do Azure AD B2C, conhecidas como políticas personalizadas.

Chaves de política (beta)

O Identity Experience Framework armazena os segredos referenciados em uma política personalizada para estabelecer confiança entre os componentes. Estes segredos podem ser chaves/valores simétricos ou assimétricos. No portal do Azure, essas entidades são mostradas como chaves de política.

O recurso de nível superior para chaves de política na API do Microsoft Graph é o Conjunto de Chaves do Trusted Framework. Cada conjunto de chaves contém pelo menos uma chave. Para criar uma chave, primeiro crie um conjunto de chaves vazio e, em seguida, gere uma chave no conjunto de chaves. Você pode criar um segredo manual, carregar um certificado ou uma chave PKCS12. A chave pode ser um segredo gerado, uma cadeia de caracteres (como o segredo do aplicativo do Facebook) ou um certificado que você carregar. Se um conjunto de chaves tiver várias chaves, apenas uma delas estará ativa.

Conjunto de chaves de política do Trust Framework

Chave de política do Quadro de Confiança

Aplicações

Propriedades de extensão de aplicativo (extensão de diretório)

As propriedades de extensão de aplicativo também são conhecidas como extensões de diretório ou Microsoft Entra. Para gerenciá-los no Azure AD B2C, use o tipo de recurso identityUserFlowAttribute e seus métodos associados.

Você pode armazenar até 100 valores de extensão de diretório por usuário. Para gerenciar as propriedades de extensão de diretório para um usuário, use as seguintes APIs de usuário no Microsoft Graph.

Para fluxos de usuário, essas propriedades de extensão são gerenciadas usando o portal do Azure. Para políticas personalizadas, o Azure AD B2C cria a propriedade para você, na primeira vez que a política grava um valor na propriedade de extensão.

Nota

No Microsoft Entra ID, as extensões de diretório são gerenciadas por meio do tipo de recurso extensionProperty e seus métodos associados. No entanto, como eles são usados em B2C por meio do b2c-extensions-app aplicativo que não deve ser atualizado, eles são gerenciados no Azure AD B2C usando o tipo de recurso identityUserFlowAttribute e seus métodos associados.

Utilização do inquilino

Use a API Obter detalhes da organização para obter sua cota de tamanho de diretório. Você precisa adicionar o $select parâmetro query conforme mostrado na seguinte solicitação HTTP:

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

Substitua organization-id pelo ID da sua organização ou locatário.

A resposta à solicitação acima é semelhante ao seguinte trecho JSON:

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

Registos de auditoria

Para obter mais informações sobre como acessar logs de auditoria do Azure AD B2C, consulte Acessando logs de auditoria do Azure AD B2C.

Acesso Condicional

Recuperar ou restaurar usuários e aplicativos excluídos

Os utilizadores e aplicações eliminados só podem ser restaurados se tiverem sido eliminados nos últimos 30 dias.

Como gerenciar programaticamente o Microsoft Graph

Quando você deseja gerenciar o Microsoft Graph, você pode fazê-lo como o aplicativo usando as permissões do aplicativo, ou você pode usar permissões delegadas. Para permissões delegadas, o usuário ou um administrador consente com as permissões solicitadas pelo aplicativo. A aplicação é delegada com a permissão para agir como um utilizador com sessão iniciada quando faz chamadas ao recurso de destino. As permissões de aplicativo são usadas por aplicativos que não exigem um usuário conectado presente e, portanto, exigem permissões de aplicativo. Por isso, apenas os administradores podem consentir com as permissões do aplicativo.

Nota

As permissões delegadas para usuários que entram por meio de fluxos de usuários ou políticas personalizadas não podem ser usadas em relação às permissões delegadas para a API do Microsoft Graph.

Exemplo de código: Como gerenciar contas de usuário programaticamente

Este exemplo de código é um aplicativo de console do .NET Core que usa o SDK do Microsoft Graph para interagir com a API do Microsoft Graph. Seu código demonstra como chamar a API para gerenciar usuários programaticamente em um locatário do Azure AD B2C. Você pode baixar o arquivo de exemplo (*.zip), navegar no repositório no GitHub ou clonar o repositório :

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

Depois de obter o exemplo de código, configure-o para seu ambiente e, em seguida, crie o projeto:

  1. Abra o projeto no Visual Studio ou Visual Studio Code.

  2. Abrir src/appsettings.json.

  3. appSettings Na seção , substitua your-b2c-tenant pelo nome do locatário e Client secretApplication (client) ID pelos valores para o registro do aplicativo de gerenciamento. Para obter mais informações, consulte Registrar um aplicativo do Microsoft Graph.

  4. Abra uma janela de console dentro do clone local do repositório, alterne para o diretório e crie o src projeto:

    cd src
    dotnet build
    
  5. Execute o aplicativo com o dotnet comando:

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

O aplicativo exibe uma lista de comandos que você pode executar. Por exemplo, obter todos os usuários, obter um único usuário, excluir um usuário, atualizar a senha de um usuário e importar em massa.

Nota

Para que o aplicativo atualize as senhas da conta de usuário, você precisará conceder a função de administrador do usuário ao aplicativo.

Discussão de código

O código de exemplo usa o SDK do Microsoft Graph, que foi projetado para simplificar a criação de aplicativos de alta qualidade, eficientes e resilientes que acessam o Microsoft Graph.

Qualquer solicitação à API do Microsoft Graph requer um token de acesso para autenticação. A solução usa o pacote NuGet Microsoft.Graph.Auth que fornece um wrapper baseado em cenário de autenticação da Microsoft Authentication Library (MSAL) para uso com o SDK do Microsoft Graph.

O RunAsync método no arquivo Program.cs :

  1. Lê as configurações do aplicativo a partir do arquivo appsettings.json
  2. Inicializa o provedor de autenticação usando o fluxo de concessão de credenciais do cliente OAuth 2.0. Com o fluxo de concessão de credenciais do cliente, o aplicativo pode obter um token de acesso para chamar a API do Microsoft Graph.
  3. Configura o cliente de serviço do Microsoft Graph com o provedor de autenticação:
// 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);

O GraphServiceClient inicializado é então usado em UserService.cs para executar as operações de gerenciamento de usuários. Por exemplo, obter uma lista das contas de usuário no locatário:

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

Fazer chamadas de API usando os SDKs do Microsoft Graph inclui informações sobre como ler e gravar informações do Microsoft Graph, usar para controlar as propriedades retornadas, fornecer parâmetros de consulta personalizados e usar $select os $filter parâmetros e $orderBy consulta.

Próximos passos