Administración de Azure AD B2C con Microsoft Graph

Microsoft Graph permite administrar recursos en el directorio de Azure AD B2C. Se admiten las siguientes operaciones de Microsoft Graph API para la administración de recursos de Azure AD B2C, incluidos usuarios, proveedores de identidades, flujos de usuarios, directivas personalizadas y claves de directivas. Cada vínculo de las secciones siguientes se dirige a la página correspondiente dentro de la referencia de Microsoft Graph API para esa operación.

Nota:

También puede crear mediante programación un directorio de Azure AD B2C, junto con el recurso de Azure correspondiente vinculado a una suscripción de Azure. Esta funcionalidad no se expone a través de Microsoft Graph API, sino a través de la API REST de Azure. Para obtener más información, consulte Inquilinos B2C: Creación.

Vea este vídeo para obtener información sobre la migración de usuario de Azure AD B2C mediante Microsoft Graph API.

Requisitos previos

  • Para usar MS Graph API e interactuar con los recursos de su inquilino de Azure AD B2C, necesita un registro de aplicación que conceda permisos para hacerlo. Siga los pasos del artículo Registro de una aplicación Microsoft Graph para crear un registro de aplicación que pueda usar la aplicación de administración.

Administración de usuarios

Nota:

Azure AD B2C no admite actualmente funcionalidades de consulta avanzadas en objetos de directorio. Esto significa que no hay compatibilidad con los operadores de consulta $count y $search ni con los operadores No (not), No es igual a (ne) y Termina con (endsWith) en el parámetro de consulta $filter. Para más información, consulte Parámetros de consulta en Microsoft Graph y Funcionalidades de consulta avanzadas en Microsoft Graph.

Administración de números de teléfono del usuario

Número de teléfono que un usuario puede emplear para iniciar sesión mediante llamadas de voz o SMS o autenticación multifactor. Para más información, consulte API de métodos de autenticación de Microsoft Entra.

Tenga en cuenta que la operación lista solo devuelve los números de teléfono habilitados. El siguiente número de teléfono debe estar habilitado para su uso con las operaciones Enumerar.

Enable phone sign-in

Nota:

Un número de teléfono representado correctamente se almacena con un espacio entre el código de país y el número de teléfono. El servicio Azure AD B2C no agrega actualmente este espacio de manera predeterminada.

Dirección de correo electrónico de autoservicio de restablecimiento de contraseña

Dirección de correo electrónico que una cuenta de inicio de sesión mediante nombre de usuario puede usar para restablecer la contraseña. Para más información, consulte API de métodos de autenticación de Microsoft Entra.

Método de autenticación de token OATH de software

Un token OATH de software es un generador de números basado en software que usa el estándar Contraseñas de un solo uso y duración definida OATH (TOTP) para la autenticación multifactor mediante una aplicación autenticadora. Use Microsoft Graph API para administrar un token OATH de software registrado para un usuario:

Proveedores de identidades

Administre los proveedores de identidades disponibles para los flujos de usuario en el inquilino de Azure AD B2C.

Flujo de usuario (beta)

Configure las directivas predefinidas para el registro, el inicio de sesión, el registro y el inicio de sesión combinados, el restablecimiento de contraseña y la actualización del perfil.

Métodos de autenticación de flujos de usuario (versión beta)

Elija un mecanismo para permitir a los usuarios registrarse mediante cuentas locales. Las cuentas locales son aquellas en las que Azure AD B2C realiza la aserción de identidad. Para obtener más información, vea tipo de recurso b2cAuthenticationMethodsPolicy.

Directivas personalizadas (beta)

Las siguientes operaciones permiten administrar las directivas del marco de confianza de Azure AD B2C, conocidas como directivas personalizadas.

Claves de directiva (beta)

Identity Experience Framework almacena los secretos a los que se hace referencia en una directiva personalizada para establecer la confianza entre los componentes. Estos secretos pueden ser claves/valores simétricos o asimétricos. En Azure Portal, estas entidades se muestran como claves de directiva.

El recurso de nivel superior para las claves de directiva de Microsoft Graph API es el conjunto de claves del marco de confianza. Cada conjunto de claves contiene al menos una clave. Para crear una clave, primero debe crear un conjunto de claves vacío y, a continuación, generar una clave en el conjunto de claves. Puede crear un secreto manual, cargar un certificado o una clave PKCS12. La clave puede ser un secreto generado, una cadena (como el secreto de aplicación de Facebook) o un certificado que cargue. Si un conjunto de claves tiene varias claves, solo una de las claves está activa.

Conjunto de claves de directiva de marco de confianza

Clave de directiva de marco de confianza

APLICACIONES

Propiedades de la extensión de aplicación (extensión de directorio)

Las propiedades de extensión de aplicaciones también son conocidas como extensiones de directorio o de Microsoft Entra. Para administrarlas en Azure AD B2C, use el tipo de recurso identityUserFlowAttribute y sus métodos asociados.

Puede almacenar hasta 100 valores de extensión de directorio por usuario. Para administrar las propiedades de extensión para un usuario, use las siguientes API de usuario en Microsoft Graph.

  • Actualizar usuario: para escribir o quitar el valor de la propiedad de extensión del usuario desde el objeto de usuario.
  • Obtener un usuario: para recuperar el valor de la extensión de directorio para el usuario. La propiedad se devolverá de forma predeterminada a través del punto de conexión beta, pero solo en $select a través del punto de conexión v1.0.

En el caso de los flujos de usuarios, estas propiedades de extensión se administran mediante Azure Portal. En el caso de las directivas personalizadas, Azure AD B2C crea la propiedad automáticamente la primera vez que la directiva escribe un valor en la propiedad de extensión.

Nota:

En Microsoft Entra ID, las extensiones de directorio se administran mediante el tipo de recurso extensionProperty y sus métodos asociados. Sin embargo, dado que se usan en B2C a través de la aplicación b2c-extensions-app que no debería actualizarse, se administran en Azure AD B2C mediante el tipo de recurso identityUserFlowAttribute y sus métodos asociados.

Uso de inquilino

Use la API de Obtención de detalles de la organización para obtener la cuota de tamaño del directorio. Debe agregar el parámetro de consulta $select, tal como se muestra en la solicitud HTTP siguiente:

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

Remplace organization-id por el id. de inquilino o de organización.

La respuesta a la solicitud anterior es similar al fragmento de código JSON siguiente:

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

Registros de auditoría

Para más información sobre cómo acceder a los registros de auditoría de Azure AD B2C, consulte Acceso a los registros de auditoría de Azure AD B2C.

Acceso condicional

Recuperación o restauración de usuarios y aplicaciones eliminados

Los usuarios y aplicaciones eliminados solo se pueden restaurar si se eliminaron en los últimos 30 días.

Administración mediante programación de Microsoft Graph

Cuando quiera administrar Microsoft Graph, podrá hacerlo como aplicación mediante los permisos de aplicación, o puede usar permisos delegados. Para los permisos delegados, el usuario o un administrador dan su consentimiento para los permisos que la aplicación requiere. A la aplicación se le delega el permiso para actuar como el usuario que inició sesión al realizar llamadas al recurso de destino. Los permisos de aplicación los usan aplicaciones que no requieren la presencia de un usuario con la sesión iniciada y, por lo tanto, requieren permisos de aplicación. Debido a esto, solo los administradores pueden dar consentimiento para los permisos de aplicación.

Nota:

Los permisos delegados para usuarios que inician sesión a través de flujos de usuario o directivas personalizadas no se pueden usar con los permisos delegados para Microsoft Graph API.

Ejemplo de código: Administración de cuentas de usuario mediante programación

Este ejemplo de código es una aplicación de consola .NET Core que usa el SDK de Microsoft Graph para interactuar con Microsoft Graph API. En su código se muestra cómo llamar a la API para administrar usuarios mediante programación en un inquilino de Azure AD B2C. Puede descargar el archivo de ejemplo (*.zip), examinar el repositorio de GitHub o clonar el repositorio:

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

Después de obtener el ejemplo de código, configúrelo para su entorno y, a continuación, compile el proyecto:

  1. Abra el proyecto en Visual Studio o en Visual Studio Code.

  2. Abra src/appsettings.json.

  3. En la sección appSettings, reemplace your-b2c-tenant por el nombre de su inquilino, y Application (client) ID y Client secret por los valores para el registro de la aplicación de administración. Para más información, consulte Registro de una aplicación de Microsoft Graph.

  4. Abra una ventana de consola en el clon local del repositorio, cambie al directorio src y, a continuación, compile el proyecto:

    cd src
    dotnet build
    
  5. Ejecute la aplicación con el comando dotnet:

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

La aplicación muestra una lista de los comandos que se pueden ejecutar. Por ejemplo, obtener todos los usuarios, obtener un solo usuario, eliminar un usuario, actualizar la contraseña de un usuario y realizar una importación en bloque.

Nota:

Para que la aplicación actualice contraseñas de cuenta de usuario, tendrá que conceder el rol Administrador de usuarios a la aplicación.

Discusión de código

En el código de ejemplo se usa el SDK de Microsoft Graph, que se ha diseñado para simplificar la creación de aplicaciones de alta calidad, eficientes y resistentes que tienen acceso a Microsoft Graph.

Cualquier solicitud a Microsoft Graph API requiere un token de acceso para la autenticación. La solución usa el paquete de NuGet Microsoft.Graph.Auth que proporciona un contenedor basado en escenario de autenticación de la biblioteca de autenticación de Microsoft (MSAL) para su uso con el SDK de Microsoft Graph.

El método RunAsync en el archivo Program.cs:

  1. Lee la configuración de la aplicación del archivo appsettings.json.
  2. Inicializa el proveedor de autenticación mediante el flujo de concesión de credenciales de cliente de OAuth 2.0. Con el flujo de concesión de credenciales de cliente, la aplicación puede obtener un token de acceso para llamar a Microsoft Graph API.
  3. Configura el cliente del servicio de Microsoft Graph con el proveedor de autenticación:
// 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);

A continuación, se usa la instancia inicializada de GraphServiceClient en GraphService.cs para realizar las operaciones de administración de usuarios. Por ejemplo, obtener una lista de las cuentas de usuario en el inquilino:

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

El documento Realizar llamadas API con los SDK de Microsoft Graph incluye información sobre cómo leer y escribir información de Microsoft Graph, usar $select para controlar las propiedades devueltas, proporcionar parámetros de consulta personalizados y usar los parámetros de consulta $filter y $orderBy.

Pasos siguientes