API Graph: privilegios insuficientes para completar la operación

Cuando intento acceder al Cliente del Servicio de gráficos usando, recibo el error:

Código: Authorization_RequestDenied
Mensaje: privilegios insuficientes para completar la operación.

Después de investigar este error, la solución más común fue establecer los permisos para la API. Esto ya se había hecho y tiene permisos para leer perfiles básicos / completos.

Eliminé y volví a agregar las API.

A continuación se muestra el código en miAzureAuthenticationProvider clase que hereda deIAuthenticationProvider:

public class AzureAuthenticationProvider : IAuthenticationProvider
{
    private string _azureDomain = "myDevDom.onmicrosoft.com";

    public async Task AuthenticateRequestAsync(HttpRequestMessage request)
    {
        try
        {
            string clientId = "2b823c67-1b0d-4a10-a9e1-737142516f5q";
            string clientSecret = "xxxxxx";

            AuthenticationContext authContext = new AuthenticationContext("https://login.windows.net/" + _azureDomain + "/oauth2/token");

            ClientCredential credentials = new ClientCredential(clientId, clientSecret);

            AuthenticationResult authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", credentials);

            request.Headers.Add("Authorization", "Bearer " + authResult.AccessToken);
        }
        catch (Exception ex)
        {
        }
    }
}

Intenté cambiar el secreto del cliente a un ID no válido y arrojó un error, por lo que la clave del cliente es correcta. También he tratado de verificar que el token de acceso es válido alterando el token de acceso, esto también devuelve un error.

El código anterior parece funcionar bien.

A continuación se muestra el código donde intento acceder a Azure AD:

public async Task<IGraphServiceUsersCollectionPage> GetUsersByLastName(string lastname)  
{
    GraphServiceClient graphClient = new GraphServiceClient(new AzureAuthenticationProvider());
    string filter = String.Format("startswith(surname, '{0}')", lastname);
    IGraphServiceUsersCollectionPage users = await graphClient.Users.Request().Filter(filter).GetAsync(); //Fails on this line
    return users;
}

Cualquier ayuda es muy apreciada, y gracias de antemano por cualquier ayuda.

Respuestas a la pregunta(6)

Su respuesta a la pregunta