Управление Azure Active Directory B2C с помощью Microsoft Graph

Microsoft Graph позволяет управлять ресурсами в каталоге Azure Active Directory B2C. Следующие операции API Microsoft Graph поддерживаются для управления ресурсами Azure Active Directory B2C, в том числе пользователями, поставщиками удостоверений, потоками пользователей, настраиваемыми политиками и ключами политик. Каждая ссылка в следующих разделах ведет на соответствующую страницу в справочнике API Microsoft Graph для этой операции.

Примечание.

Вы также можете программно создать сам каталог Azure AD B2C, а также соответствующий ресурс Azure, связанный с подпиской Azure. Эта функция не предоставляется не через API Microsoft Graph, а с помощью REST API Azure. Дополнительные сведения см. в статье Арендаторы B2C — создание.

Просмотрите это видео, чтобы узнать о переносе пользователей Azure AD B2C с помощью API Microsoft Graph.

Необходимые компоненты

Управление пользователями

Примечание.

Azure AD B2C в настоящее время не поддерживает расширенные возможности запросов к объектам каталога. Это означает, что не поддерживаются параметры запросов $count и $search, а также операторы "Нет" (not), "Не равно" (ne) и "Заканчивается на" (endsWith) в параметре запроса $filter. Дополнительные сведения см. в статьях Параметры запросов в Microsoft Graph и Расширенные возможности запросов в Microsoft Graph.

Управление номерами телефонов пользователей

Номер телефона, который пользователь может использовать для входа с помощью SMS, голосовых звонков или многофакторной проверки подлинности. Дополнительные сведения см. в API методов проверки подлинности Microsoft Entra.

Обратите внимание, что операция list возвращает только включенные номера телефонов. Следующий номер телефона необходимо включить, чтобы его можно было использовать в операциях list.

Enable phone sign-in

Примечание.

Правильно представленный номер телефона хранится с пробелом между кодом страны и номером телефона. В настоящее время служба Azure AD B2C не добавляет такой пробел по умолчанию.

Адрес электронной почты самостоятельного сброса пароля

Адрес электронной почты, который может использоваться учетной записью входа по имени пользователя для сброса пароля. Дополнительные сведения см. в API методов проверки подлинности Microsoft Entra.

Метод проверки подлинности токена SOFTWARE OATH

Программный токен OATH — это программный генератор чисел, использующий стандарт одноразового пароля с ограниченным сроком действия (TOTP) OATH для многофакторной проверки подлинности с помощью приложения Authenticator. Используйте API Microsoft Graph для управления программным токеном OATH, зарегистрированным для пользователя:

Поставщики удостоверений

Управляйте поставщиками удостоверений, доступными в ваших пользовательских потоках, в клиенте Azure Active Directory B2C.

Поток пользователя (бета-версия)

Настройте предварительно созданные политики для регистрации, входа, объединенной регистрации и входа в систему, сброса пароля и обновления профиля.

Методы проверки подлинности потока пользователя (бета-версия)

Выберите механизм, позволяющий регистрировать пользователей с помощью локальных учетных записей. Локальные учетные записи — это учетные записи, в которых Azure AD B2C выполняет утверждение удостоверения. Дополнительные сведения см. в описании типа ресурса b2cAuthenticationMethodsPolicy.

Пользовательские политики (бета-версия)

Следующие операции позволяют управлять политиками инфраструктуры доверия Azure Active Directory B2C, которые называются настраиваемыми политиками.

Ключи политики (бета-версия)

Identity Experience Framework хранит секреты, на которые ссылается настраиваемая политика, для установления отношений доверия между компонентами. Эти секреты могут быть симметричными или асимметричными ключами/значениями. На портале Azure эти сущности отображаются как ключи политик.

Ресурс верхнего уровня для ключей политик в API Microsoft Graph — это набор ключей инфраструктуры доверия. Каждый набор ключей содержит по крайней мере один ключ. Чтобы создать ключ, сначала создайте пустой набор ключей, а затем сформируйте ключ в этом наборе ключей. Вы можете создать секрет вручную, отправить сертификат или создать ключ PKCS12. Ключом может быть созданный секрет, строка (как, например, секрет приложения Facebook) или отправленный сертификат. Если набор ключей содержит несколько ключей, то активен только один из них.

Набор ключей политики инфраструктуры доверия

Ключ политики инфраструктуры доверия

Приложения

Свойства расширения приложения (расширения каталога)

Свойства расширения приложения также называются расширениями каталога или Microsoft Entra. Чтобы управлять ими в Azure AD B2C, используйте тип ресурса identityUserFlowAttribute и связанные с ним методы.

Вы можете хранить до 100 значений расширений каталога для каждого пользователя. Чтобы управлять значениями расширений каталога для пользователя, используйте следующие API пользователя в Microsoft Graph.

  • Обновление пользователя: сохранение или удаление значения свойства расширения каталога для объекта пользователя.
  • Получение пользователя: извлечение значений расширения каталога для пользователя. Это свойство по умолчанию возвращается через конечную точку beta, но в операции $select — через конечную точку v1.0.

Для потоков пользователей эти свойства расширения управляются с помощью портала Azure. Для настраиваемых политик Azure Active Directory B2C создает свойство, когда политика в первый раз записывает значение в свойство расширения.

Примечание.

В идентификаторе Microsoft Entra расширения каталогов управляются с помощью типа ресурса extensionProperty и связанных с ним методов. Но в B2C они используются через приложение b2c-extensions-app, которое не должно обновляться, поэтому для управления расширениями в Azure AD B2C используется другой тип ресурса IdentityUserFlowAttribute и связанные с ним методы.

Использование клиента

Используйте API получения сведений о организации, чтобы получить квоту размера каталога. Необходимо добавить $select параметр запроса, как показано в следующем HTTP-запросе:

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

Замените organization-id идентификатором организации или клиента.

Ответ на приведенный выше запрос выглядит примерно так, как показано в следующем фрагменте КОДА JSON:

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

Журналы аудита

Дополнительные сведения о доступе к журналам аудита Azure Active Directory B2C см. в разделе Доступ к журналам аудита Azure Active Directory B2C.

Условный доступ

Получение списка или восстановление удаленных пользователей и приложений

Удаленные пользователи и приложения можно восстановить только в течение последних 30 дней.

Как программно управлять Microsoft Graph

Если вы хотите управлять Microsoft Graph, это можно сделать с помощью приложения с использованием разрешений приложения или с помощью делегированных разрешений. Если вы хотите использовать делегированные разрешения, пользователь или администратор должен предоставить согласие на разрешения, которые запрашивает приложение. Приложение получает разрешение выполнять роль авторизованного пользователя при вызове целевого ресурса. Разрешения приложения используются приложениями, для которых не требуется наличие выполнившего вход пользователя, поэтому им требуются разрешения приложения. По этой причине только администраторы могут предоставить согласие на разрешения приложения.

Примечание.

Делегированные разрешения для пользователей, которые входят в систему с помощью пользовательских потоков или пользовательских политик, нельзя использовать для делегированных разрешений API Microsoft Graph.

Пример кода: управление учетными записями пользователей программными средствами

Этот пример кода представляет собой консольное приложение .NET Core, которое использует пакет SDK Microsoft Graph для взаимодействия с API Microsoft Graph. В его коде показано, как вызывать API для программного управления пользователями в клиенте Azure Active Directory B2C. Вы можете скачать пример архива (*.zip), найти репозиторий на сайте GitHub или клонировать репозиторий.

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

После получения примера кода настройте его для своей среды, а затем выполните сборку проекта.

  1. Откройте проект в Visual Studio или Visual Studio Code.

  2. Открыть src/appsettings.json.

  3. В разделе appSettings замените your-b2c-tenant именем своего клиента, а Application (client) ID и Client secret — значениями для регистрации вашего приложения управления. Дополнительные сведения см. в разделе Регистрация приложения Microsoft Graph.

  4. Откройте окно консоли в локальном клоне репозитория, перейдите в каталог src, а затем выполните сборку проекта.

    cd src
    dotnet build
    
  5. Запустите приложение, выполнив команду dotnet:

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

Приложение отображает список команд, которые вы можете выполнить. Например, получение всех пользователей, получение одного пользователя, удаление пользователя, обновление пароля пользователя и массовый импорт.

Примечание.

Чтобы приложения могли обновлять пароли учетных записей пользователей, вам потребуется предоставить роль администратора пользователей приложению.

Обсуждение кода

В этом примере кода используется пакет SDK Microsoft Graph, предназначенный для упрощения создания высококачественных, эффективных и устойчивых приложений, обращающихся к Microsoft Graph.

При любом запросе к API Microsoft Graph требуется маркер доступа для проверки подлинности. В решении используется пакет NuGet Microsoft.Graph.Auth, который предоставляет оболочку на основе сценария из библиотеки проверки подлинности Майкрософт (MSAL) для использования с пакетом SDK Microsoft Graph.

Метод RunAsync в файле Program.cs выполняет следующие действия.

  1. Считывает параметры приложения из файла appsettings.js.
  2. Инициализирует поставщик проверки подлинности с помощью потока предоставления учетных данных клиента OAuth 2.0. С помощью потока предоставления учетных данных клиента приложение может получить маркер доступа для вызова API Microsoft Graph.
  3. Настраивает поставщика проверки подлинности в клиенте службы Microsoft Graph.
// 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 затем используется в UserService.cs для выполнения операций управления пользователями. Например, можно получить список учетных записей пользователей в клиенте.

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

В разделе Выполнение вызовов API с помощью пакетов SDK Microsoft Graph содержатся сведения о том, как считывать и записывать данные из Microsoft Graph, использовать $select для управления возвращенными свойствами, предоставлять параметры для настраиваемых запросов и использовать параметры запроса $filter и $orderBy.

Следующие шаги