Llamar a Microsoft Graph desde una aplicación del proveedor de soluciones en la nube

Nota: Este tema solo se aplica a los desarrolladores de aplicaciones del Proveedor de soluciones en la nube (CSP) de Microsoft. El programa Proveedor de soluciones en la nube (CSP) de Microsoft permite a los asociados de Microsoft revender y administrar servicios de Microsoft Online a los clientes.

En este artículo se describe cómo habilitar el acceso de la aplicación a los datos de clientes administrados por el asociado a través de Microsoft Graph mediante el flujo de concesión de código de autorización o el flujo de credenciales de cliente de servicio a servicio.

Importante

La llamada a Microsoft Graph desde una aplicación CSP solo se admite para los recursos de directorio (como los recursos de usuario, grupo, dispositivo, organización) y Intune.

¿Qué es una aplicación administrada por el asociado?

El programa CSP permite a los asociados de Microsoft revender y administrar Microsoft Online Services (como Microsoft 365, Microsoft Azure y CRM Online) a los clientes. La administración de los servicios al cliente se realiza a través de privilegios de Administración delegados, lo que permite a los usuarios asociados designados (conocidos como agentes) acceder y configurar los entornos de sus clientes.

Además, como desarrollador asociado, puede crear una aplicación administrada por asociados para administrar los servicios de Microsoft de sus clientes. A menudo, las aplicaciones administradas por asociados se denominan aplicaciones preconsentidas porque todos los clientes se preconsienten automáticamente para las aplicaciones administradas por asociados. Esto significa que cuando un usuario de uno de los inquilinos del cliente usa una de las aplicaciones administradas por asociados, el usuario puede usarlo sin que se le pida que dé su consentimiento. Las aplicaciones administradas por asociados también heredan privilegios de Administración delegados, por lo que los agentes de asociados también pueden obtener acceso con privilegios a los clientes a través de la aplicación administrada por el asociado.

Cómo configurar una aplicación administrada por el asociado

Una aplicación se muestra como administrada por el asociado cuando se le han concedido permisos elevados para tener acceso a los datos de los clientes.

Nota: Las aplicaciones administradas por el asociado solo pueden configurarse en los inquilinos del asociado, y con el fin de administrar los recursos del inquilino cliente, las aplicaciones administradas por el asociado deben configurarse como aplicaciones multiinquilino.

Registro y configuración de una aplicación multiinquilino

Los pasos iniciales necesarios aquí siguen la mayoría de los mismos pasos que se usan para registrar y configurar una aplicación multiinquilino:

  1. Registre la aplicación en el inquilino de partner mediante el Centro de administración Microsoft Entra. Para funcionar como una aplicación administrada por asociados, una aplicación debe configurarse como una aplicación multiinquilino. Además, si la aplicación se implementa y se vende en varias regiones geográficas, debes registrar la aplicación en cada una de esas regiones, como se describe aquí.
  2. Configure la aplicación multiinquilino, de nuevo a través de la Centro de administración Microsoft Entra, con los permisos necesarios que necesita para usar un enfoque con privilegios mínimos.

Configuración previa de la aplicación para todos los clientes

Por último, conceda a la aplicación administrada por el asociado los permisos configurados para todos los clientes. Para ello, agregue el servicePrincipal que representa la aplicación al grupo Adminagents del inquilino del asociado, mediante PowerShell V2 de Azure AD o PowerShell de Microsoft Graph. Siga estos pasos para buscar el grupo Adminagents , servicePrincipal y agregarlo al grupo.

Nota:

Los módulos de PowerShell de Azure AD y MSOnline están en desuso a partir del 30 de marzo de 2024. Para obtener más información, lea la actualización de desuso. Después de esta fecha, la compatibilidad con estos módulos se limita a la ayuda de migración al SDK de PowerShell de Microsoft Graph y a las correcciones de seguridad. Los módulos en desuso seguirán funcionando hasta el 30 de marzo de 2025.

Se recomienda migrar a Microsoft Graph PowerShell para interactuar con Microsoft Entra ID (anteriormente Azure AD). Para obtener preguntas comunes sobre la migración, consulte las Preguntas más frecuentes sobre la migración. Nota: Las versiones 1.0.x de MSOnline pueden experimentar interrupciones después del 30 de junio de 2024.

  1. Abra una sesión de PowerShell y conéctese al inquilino asociado. Para ello, escriba sus credenciales de administrador en la ventana de inicio de sesión.

    Connect-AzureAd
    
  2. Busque el grupo Adminagents.

    $group = Get-AzureADGroup -Filter "displayName eq 'Adminagents'"
    
  3. Busque la entidad de servicio que tenga el mismo appId que su aplicación.

    $sp = Get-AzureADServicePrincipal -Filter "appId eq '{yourAppsAppId}'"
    
  4. Por último, agregue la entidad de servicio al grupo Adminagents.

    Add-AzureADGroupMember -ObjectId $group.ObjectId -RefObjectId $sp.ObjectId
    

Flujos de adquisición de tokens

Los flujos de adquisición de tokens para aplicaciones administradas por asociados ( flujo de concesión de código de autorización y flujo de credenciales de cliente de servicio a servicio ) son los mismos que las aplicaciones multiinquilino normales.

Además del acceso preconsentido a todos los inquilinos de los clientes, las aplicaciones administradas por asociados tienen una funcionalidad más. Permite a los agentes usar la aplicación para acceder a los datos de inquilino de los clientes (mediante privilegios de administrador delegado). Conceptualmente funciona así:

  1. El agente inicia sesión en la aplicación con sus credenciales de usuario emitidas por el inquilino de asociado.
  2. La aplicación solicita un token de acceso para el inquilino de cliente administrado por el asociado previsto.
  3. La aplicación usa el token de acceso para llamar a Microsoft Graph.

Se trata de un flujo de concesión de código de autorización estándar, salvo que los agentes deben iniciar sesión con sus cuentas de asociado. Para ver cómo se vería esto, imagine que el inquilino del asociado está partner.com (que es el inquilino principal de los agentes) y uno de sus clientes está customer.com:

  1. Adquisición de un código de autorización: La aplicación realiza una solicitud al /authorize punto de conexión y debe usar un inquilino de cliente, en nuestro ejemplo customer.com, para el inquilino de destino. Los agentes seguirían iniciando sesión con su username@partner.com cuenta.

    GET https://login.microsoftonline.com/customer.com/oauth2/authorize
    
  2. Adquiera un token de acceso usando el código de autorización: Su aplicación debe usar un espacio empresarial de cliente como el espacio empresarial de destino, en nuestro ejemplo customer.com, cuando realiza la solicitud al punto de conexión token:

    POST https://login.microsoftonline.com/customer.com/oauth2/token
    
  3. Ahora que tiene un token de acceso, llame a Microsoft Graph. Para ello, ponga el token de acceso en el encabezado de autorización HTTP:

    GET https://graph.microsoft.com/beta/users
    Authorization: Bearer <token>
    

Registrar la aplicación en las regiones admitidas

Actualmente, la participación del cliente de CSP está limitada a una sola región. Las aplicaciones administradas por asociados tienen la misma limitación. Esto significa que debe tener un inquilino independiente para cada región en la que se vende. Por ejemplo, si la aplicación administrada por el asociado está registrada en un inquilino en EE. UU., pero el cliente está en la UE, la aplicación administrada por el asociado no funcionará. Cada uno de los inquilinos de asociados regionales debe mantener su propio conjunto de aplicaciones administradas por asociados para administrar clientes dentro de la misma región. Esto podría requerir lógica adicional en la aplicación (antes de iniciar sesión) para obtener el nombre de usuario de inicio de sesión de los clientes para decidir qué identidad de aplicación administrada por asociados específica de la región usar, para atender al usuario.

Llamar a Microsoft Graph inmediatamente después de la creación del cliente

Al crear un nuevo cliente mediante la API del Centro de partners, se crea un nuevo inquilino de cliente. Además, también se crea una relación de asociado, lo que le convierte en el asociado de registro de este nuevo inquilino de cliente. Esta relación de asociado puede tardar hasta 3 minutos en propagarse al nuevo inquilino del cliente. Si la aplicación llama a Microsoft Graph inmediatamente después de la creación, es probable que la aplicación reciba un error de acceso denegado. Se puede experimentar un retraso similar cuando un cliente existente acepta su invitación. Esto se debe a que el preconsentimiento se basa en la relación de asociado que está presente en el inquilino del cliente.

Para evitar este problema, se recomienda que la aplicación asociada espere tres minutos después de la creación del cliente antes de llamar a Microsoft Entra ID para adquirir un token (para llamar a Microsoft Graph). Esto debería abarcar la mayoría de los casos. Sin embargo, si después de esperar tres minutos sigue recibiendo un error de autorización, espere 60 segundos más e inténtelo de nuevo.

Nota: En el reintento, debe adquirir un nuevo token de acceso de Microsoft Entra ID, antes de llamar a Microsoft Graph. Llamar a Microsoft Graph con el token de acceso que ya tiene no funcionará, ya que el token de acceso es bueno durante una hora y no contendrá las notificaciones de permisos con consentimiento previo.