Compartir a través de


Autenticación del Centro de partners

Se aplica a: Centro de partners | Centro de partners operado por 21Vianet | Centro de partners para Microsoft Cloud for US Government

El Centro de partners usa Microsoft Entra ID para la autenticación. Al interactuar con el módulo de PowerShell, el SDK o la API del Centro de partners, debes configurar correctamente una aplicación de Microsoft Entra y, a continuación, solicitar un token de acceso. Los tokens de acceso obtenidos mediante la autenticación de solo la aplicación o la aplicación y el usuario se pueden usar con el Centro de partners. Sin embargo, hay dos elementos importantes que se deben tener en cuenta.

  • Use la autenticación multifactor al acceder a la API del Centro de partners mediante la autenticación de aplicación y usuario. Para obtener más información sobre este cambio, consulta Habilitación del modelo de aplicaciones seguras.

  • No todas las operaciones de la API del Centro de partners admiten la autenticación de solo aplicación. Existen algunos escenarios en los que se te pedirá que uses la autenticación de usuario y aplicación. En el encabezado Requisitos previos de cada artículo, encontrará documentación que indica si solo se admiten la autenticación de la aplicación, la aplicación y la autenticación de usuario o ambas.

Importante

Azure Active Directory (Azure AD) Graph está en desuso a partir del 30 de junio de 2023. En el futuro, no estamos realizando más inversiones en Azure AD Graph. Las API de Graph de Azure AD no tienen ningún acuerdo de nivel de servicio ni compromiso de mantenimiento más allá de las correcciones relacionadas con la seguridad. Las inversiones en las nuevas características y funcionalidades solo se realizarán en Microsoft Graph.

Retiraremos Azure AD Graph en pasos incrementales para que tenga tiempo suficiente para migrar las aplicaciones a las API de Microsoft Graph. En una fecha posterior que anunciaremos, bloquearemos la creación de aplicaciones nuevas mediante Azure AD Graph.

Para más información, consulte Importante: Retirada de Azure AD Graph y Desuso del módulo de PowerShell.

Configuración inicial

  1. Para empezar, debes asegurarte de que tienes una cuenta del Centro de partners principal y una cuenta del Centro de partners de espacio aislado de integración. Para obtener más información, consulte Configurar cuentas del Centro de partners para el acceso a la API. Anote el identificador de registro de la aplicación de Microsoft Entra y el secreto (el secreto de cliente solo es necesario para la identificación de la aplicación) tanto para la cuenta principal como para la cuenta de espacio aislado de integración.

  2. Inicie sesión en el identificador de Microsoft Entra desde Azure Portal. En Permisos para otras aplicaciones, establece los permisos para Windows Azure Active Directory en Permisos delegados, y selecciona las opciones Acceder al directorio como usuario con sesión iniciada y Iniciar sesión y leer el perfil del usuario.

  3. En Azure Portal, selecciona Agregar aplicación. Busque "Centro de partners de Microsoft", que es la aplicación centro de partners de Microsoft. Establece la opción Permisos delegados en Access Partner Center API (Acceder a la API del Centro de partners). Si usa el Centro de partners para Microsoft Cloud for US Government, este paso es obligatorio. Si usa la instancia global del Centro de partners, este paso es opcional. Los partners de CSP pueden usar la característica Administración de aplicaciones en el Centro de partners para omitir este paso para la instancia global del Centro de partners.

Autenticación de solo aplicación

Si quiere usar la autenticación de solo aplicación para acceder a la API REST del Centro de partners, la API de .NET, la API de Java o el módulo de PowerShell, puede hacerlo siguiendo las siguientes instrucciones.

.NET (autenticación de solo aplicación)

public static IAggregatePartner GetPartnerCenterTokenUsingAppCredentials()
{
    IPartnerCredentials partnerCredentials =
        PartnerCredentials.Instance.GenerateByApplicationCredentials(
            PartnerApplicationConfiguration.ApplicationId,
            PartnerApplicationConfiguration.ApplicationSecret,
            PartnerApplicationConfiguration.ApplicationDomain);

    // Create operations instance with partnerCredentials.
    return PartnerService.Instance.CreatePartnerOperations(partnerCredentials);
}

Java (autenticación de solo aplicación)

El SDK de Java del Centro de partners se puede usar para administrar los recursos del Centro de partners. Es un proyecto de código abierto mantenido por la comunidad de partners y no es compatible oficialmente con Microsoft. Puedes obtener ayuda de la comunidad o abrir una incidencia en GitHub si se produce un problema.

public IAggregatePartner getAppPartnerOperations()
{
    IPartnerCredentials appCredentials =
        PartnerCredentials.getInstance().generateByApplicationCredentials(
        PartnerApplicationConfiguration.getApplicationId(),
        PartnerApplicationConfiguration.getApplicationSecret(),
        PartnerApplicationConfiguration.getApplicationDomain());

    return PartnerService.getInstance().createPartnerOperations( appCredentials );
}

REST (autenticación de solo aplicación)

Solicitud REST

POST https://login.microsoftonline.com/{tenantId}/oauth2/token HTTP/1.1
Accept: application/json
return-client-request-id: true
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 194
Expect: 100-continue

resource=https%3A%2F%2Fgraph.windows.net&client_id={client-id-here}&client_secret={client-secret-here}&grant_type=client_credentials

Respuesta REST

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 1406

{"token_type":"Bearer","expires_in":"3600","ext_expires_in":"3600","expires_on":"1546469802","not_before":"1546465902","resource":"https://graph.windows.net","access_token":"value-has-been-removed"}

Autenticación de aplicación y usuario

El modelo de aplicación segura ahora se usa para proporcionar autenticación segura, escalable y de prueba futura para el acceso a la API del Centro de partners. Este enfoque mejora la seguridad mediante mecanismos de autenticación modernos, como los tokens de acceso solo para aplicaciones y aplicaciones y usuarios a través de Azure AD. Para obtener más información, consulta el artículo Habilitación del modelo de aplicaciones seguras.

El proceso de consentimiento del asociado es un proceso interactivo en el que el asociado se autentica mediante la autenticación multifactor, da su consentimiento a la aplicación y se almacena un token de actualización en un repositorio seguro, como Azure Key Vault. Te recomendamos que uses una cuenta dedicada para la integración con este proceso.

Importante

La solución de autenticación multifactor adecuada debe estar habilitada para la cuenta de servicio que se usa en el proceso de consentimiento del asociado. Si no es así, el token de actualización resultante no cumplirá con los requisitos de seguridad.

Ejemplos de autenticación de aplicación y usuario

El proceso de consentimiento del asociado se puede realizar de muchas maneras. Para ayudar a los asociados a comprender cómo realizar cada operación necesaria, hemos desarrollado los ejemplos siguientes. Al implementar la solución adecuada en su entorno, es importante desarrollar una solución que sea compatible con los estándares de codificación y las directivas de seguridad.

.NET (autenticación de aplicación y usuario)

En el proyecto de ejemplo de consentimiento del partner se muestra cómo utilizar un sitio web desarrollado con ASP.NET para capturar el consentimiento, solicitar un token de actualización y almacenarlo de forma segura en Azure Key Vault. Realiza los pasos siguientes para crear los requisitos previos necesarios para este ejemplo.

  1. Crea una instancia de Azure Key Vault mediante Azure Portal o los siguientes comandos de PowerShell. Antes de ejecutar el comando, asegúrate de modificar los valores de los parámetros según corresponda. El nombre del almacén debe ser único.

    Login-AzureRmAccount
    
    # Create a new resource group
    New-AzureRmResourceGroup -Name ContosoResourceGroup -Location EastUS
    
    New-AzureRmKeyVault -Name 'Contoso-Vault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East US'
    

    Para más información sobre cómo crear una instancia de Azure Key Vault, consulte Inicio rápido: Establecimiento y recuperación de un secreto de Azure Key Vault mediante Azure Portal o Inicio rápido: Establecimiento y recuperación de un secreto de Azure Key Vault mediante PowerShell. A continuación, establece y recupera un secreto.

  2. Cree una aplicación de Microsoft Entra y una clave mediante Azure Portal o los siguientes comandos.

    Connect-MgGraph -Scopes "Application.ReadWrite.OwnedBy"
    
    $Context = Get-MgContext
    
    $app = New-MgApplication -DisplayName 'My Vault Access App' -Web @{ RedirectUris = 'https://$($Context.TenantId)/$((New-Guid).ToString())' }
    $password = Add-MgApplicationPassword -ApplicationId $app.AppId
    
    Write-Host "ApplicationId       = $($app.AppId)"
    Write-Host "ApplicationSecret   = $($password.SecretText)"
    

    Asegúrate de anotar los valores del identificador y el secreto de la aplicación, ya que se usarán en los pasos siguientes.

  3. Conceda a la aplicación Microsoft Entra recién creada los permisos de lectura de secretos mediante Azure Portal o los siguientes comandos.

    # Connect to Microsoft Graph
    Connect-MgGraph -Scopes "User.Read"
    
    # Get the application
    $app = Get-MgApplication -Filter "appId eq 'ENTER-APP-ID-HERE'"
    
    # Set the Key Vault access policy
    Set-AzKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.Id -PermissionsToSecrets get
    
  4. Cree una aplicación de Microsoft Entra configurada para el Centro de partners. Realiza las acciones siguientes para completar este paso.

    Asegúrese de documentar los valores Id. de la aplicación, Id. de la cuenta y Clave, ya que se usarán en los pasos siguientes.

  5. Clona el repositorio Partner-Center-DotNet-Samples con Visual Studio o el siguiente comando.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  6. Abre el proyecto PartnerConsent que se encuentra en el directorio Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  7. Rellena la configuración de la aplicación que se encuentra en web.config.

    <!-- AppID that represents CSP application -->
    <add key="ida:CSPApplicationId" value="" />
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:CSPApplicationSecret" value="" />
    
    <!--
        Endpoint address for the instance of Azure KeyVault. This is
        the DNS Name for the instance of Key Vault that you provisioned.
     -->
    <add key="KeyVaultEndpoint" value="" />
    
    <!-- App ID that is given access for KeyVault to store refresh tokens -->
    <add key="ida:KeyVaultClientId" value="" />
    
    <!--
        Please use certificate as your client secret and deploy the certificate
        to your environment. The following application secret is for sample
        application only. please do not use secret directly from the config file.
    -->
    <add key="ida:KeyVaultClientSecret" value="" />
    

    Importante

    La información confidencial, como los secretos de la aplicación, no debe almacenarse en archivos de configuración. En este caso, lo hicimos porque se trata de una aplicación de ejemplo. Con la aplicación de producción, te recomendamos encarecidamente que uses la autenticación basada en certificados. Para obtener más información, consulta Credenciales de certificado para la autenticación de aplicaciones.

  8. Al ejecutar este proyecto de ejemplo, se le solicita la autenticación. Después de autenticarse correctamente, se solicita un token de acceso desde el identificador de Microsoft Entra. La información devuelta del identificador de Entra de Microsoft incluye un token de actualización que se almacena en la instancia configurada de Azure Key Vault.

Java (autenticación de aplicación y usuario)

En el proyecto de ejemplo de consentimiento del partner se muestra cómo utilizar un sitio web desarrollado con JSP para capturar el consentimiento, solicitar un token de actualización y almacenarlo de forma segura en Azure Key Vault. Realiza lo siguiente para crear los requisitos previos necesarios para este ejemplo.

  1. Crea una instancia de Azure Key Vault mediante Azure Portal o los siguientes comandos de PowerShell. Antes de ejecutar el comando, asegúrate de modificar los valores de los parámetros según corresponda. El nombre del almacén debe ser único.

    Login-AzureRmAccount
    
    # Create a new resource group
    New-AzureRmResourceGroup -Name ContosoResourceGroup -Location EastUS
    
    New-AzureRmKeyVault -Name 'Contoso-Vault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East US'
    

    Para más información sobre cómo crear una instancia de Azure Key Vault, consulte Inicio rápido: Establecimiento y recuperación de un secreto de Azure Key Vault mediante Azure Portal o Inicio rápido: Establecimiento y recuperación de un secreto de Azure Key Vault mediante PowerShell.

  2. Cree una aplicación de Microsoft Entra y una clave mediante Azure Portal o los siguientes comandos.

    Connect-MgGraph -Scopes "Application.ReadWrite.OwnedBy"
    
    $Context = Get-MgContext
    
    $app = New-MgApplication -DisplayName 'My Vault Access App' -IdentifierUri 'https://$($Context.TenantDomain)/$((New-Guid).ToString())'
    $password = Add-MgApplicationPassword -ApplicationId $app.AppId
    
    Write-Host "ApplicationId       = $($app.AppId)"
    Write-Host "ApplicationSecret   = $($password.SecretText)"
    

    Asegúrate de documentar los valores del identificador y el secreto de la aplicación, ya que se usarán en los pasos siguientes.

  3. Conceda a la aplicación Microsoft Entra recién creada los permisos de lectura de secretos mediante Azure Portal o los siguientes comandos.

    Connect-MgGraph -Scopes "User.Read"
    $app = Get-MgApplication -Filter "appId eq 'ENTER-APP-ID-HERE'"
    
    Set-AzKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.Id -PermissionsToSecrets get
    
  4. Cree una aplicación de Microsoft Entra configurada para el Centro de partners. Realiza lo siguiente para completar este paso.

    Asegúrese de documentar los valores Id. de la aplicación, Id. de la cuenta y Clave, ya que se usarán en los pasos siguientes.

  5. Clona el repositorio Partner-Center-Java-Samples con el siguiente comando.

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  6. Abre el proyecto PartnerConsent que se encuentra en el directorio Partner-Center-Java-Samples\secure-app-model\keyvault.

  7. Rellena la configuración de la aplicación que se encuentra en el archivo web.xml.

    <filter>
        <filter-name>AuthenticationFilter</filter-name>
        <filter-class>com.microsoft.store.samples.partnerconsent.security.AuthenticationFilter</filter-class>
        <init-param>
            <param-name>client_id</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>client_secret</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>keyvault_base_url</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>keyvault_client_id</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>keyvault_client_secret</param-name>
            <param-value></param-value>
        </init-param>
        <init-param>
            <param-name>keyvault_certifcate_path</param-name>
            <param-value></param-value>
        </init-param>
    </filter>
    

    Importante

    La información confidencial, como los secretos de la aplicación, no debe almacenarse en archivos de configuración. En este caso, lo hicimos porque se trata de una aplicación de ejemplo. Con la aplicación de producción, te recomendamos encarecidamente que uses la autenticación basada en certificados. Para obtener más información, consulta Autenticación de certificados de Key Vault.

  8. Al ejecutar este proyecto de ejemplo, se le solicita la autenticación. Después de autenticarse correctamente, se solicita un token de acceso desde el identificador de Microsoft Entra. La información devuelta del identificador de Entra de Microsoft incluye un token de actualización que se almacena en la instancia configurada de Azure Key Vault.

Autenticación del Proveedor de soluciones en la nube

Los partners del Proveedor de soluciones en la nube pueden usar el token de actualización obtenido a través del proceso de consentimiento del partner.

Ejemplos de la autenticación del Proveedor de soluciones en la nube

Para ayudar a los asociados a comprender cómo realizar cada operación necesaria, hemos desarrollado los ejemplos siguientes. Al implementar la solución adecuada en su entorno, es importante desarrollar una solución que sea compatible con los estándares de codificación y las directivas de seguridad.

.NET (autenticación de CSP)

  1. Si aún no lo ha hecho, realice el proceso de consentimiento del asociado.

  2. Clona el repositorio Partner-Center-DotNet-Samples con Visual Studio o el siguiente comando.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Abre el proyecto CSPApplication que se encuentra en el directorio Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  4. Actualiza la configuración de la aplicación que se encuentra en el archivo App.config.

    <!-- AppID that represents CSP application -->
    <add key="ida:CSPApplicationId" value="" />
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:CSPApplicationSecret" value="" />
    
    <!-- Endpoint address for the instance of Azure KeyVault -->
    <add key="KeyVaultEndpoint" value="" />
    
    <!-- AppID that is given access for keyvault to store the refresh tokens -->
    <add key="ida:KeyVaultClientId" value="" />
    
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:KeyVaultClientSecret" value="" />
    
  5. Establece los valores adecuados para las variables PartnerId y CustomerId que se encuentran en el archivo Program.cs.

    // The following properties indicate which partner and customer context the calls are going to be made.
    string PartnerId = "<Partner tenant id>";
    string CustomerId = "<Customer tenant id>";
    
  6. Al ejecutar este proyecto de ejemplo, obtiene el token de actualización obtenido durante el proceso de consentimiento del partner. A continuación, solicita un token de acceso para interactuar con el SDK del Centro de partners en nombre del asociado. Por último, solicita un token de acceso para interactuar con Microsoft Graph en nombre del cliente especificado.

Java (autenticación de CSP)

  1. Si aún no lo ha hecho, realice el proceso de consentimiento del asociado.

  2. Clona el repositorio Partner-Center-Java-Samples con Visual Studio o el siguiente comando.

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Abre el proyecto cspsample que se encuentra en el directorio Partner-Center-Java-Samples\secure-app-model\keyvault.

  4. Actualiza la configuración de la aplicación que se encuentra en el archivo application.properties.

    azuread.authority=https://login.microsoftonline.com
    keyvault.baseurl=
    keyvault.clientId=
    keyvault.clientSecret=
    partnercenter.accountId=
    partnercenter.clientId=
    partnercenter.clientSecret=
    
  5. Al ejecutar este proyecto de ejemplo, obtiene el token de actualización obtenido durante el proceso de consentimiento del partner. A continuación, solicita un token de acceso para interactuar con el SDK del Centro de partners en nombre del asociado.

  6. Opcional: quita las marcas de comentarios de las llamadas a la función RunAzureTask y RunGraphTask si quieres ver cómo se debe interactuar con Azure Resource Manager y Microsoft Graph en nombre del cliente.

Autenticación del proveedor del panel de control

Los proveedores de panel de control deben hacer que cada uno de los partners que admiten realice el proceso de consentimiento del partner. Una vez que se completa, el token de actualización obtenido a través de ese proceso, se usa para acceder a la API de .NET y a la API REST del Centro de partners.

Nota:

Los proveedores de panel de control deben tener como mínimo el rol Administrador de aplicaciones en la nube en el inquilino del cliente.

Ejemplos de la autenticación del proveedor del panel en la nube

Para ayudar a los proveedores del panel de control a comprender cómo realizar cada operación necesaria, hemos desarrollado los ejemplos siguientes. Al implementar la solución adecuada en su entorno, es importante desarrollar una solución que sea compatible con los estándares de codificación y las directivas de seguridad.

.NET (autenticación de CPV)

  1. Desarrolla e implementa un proceso para que los partners del Proveedor de soluciones en la nube proporcionen el consentimiento adecuado. Para obtener más información y ver un ejemplo, consulta Consentimiento del asociado.

    Importante

    Las credenciales de usuario de un partner del Proveedor de soluciones en la nube no se deben almacenar. El token de actualización obtenido a través del proceso de consentimiento del partner debe almacenarse y usarse para solicitar tokens de acceso a fin de interactuar con cualquier API de Microsoft.

  2. Clona el repositorio Partner-Center-DotNet-Samples con Visual Studio o el siguiente comando.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Abre el proyecto CPVApplication que se encuentra en el directorio Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  4. Actualiza la configuración de la aplicación que se encuentra en el archivo App.config.

    <!-- AppID that represents Control panel vendor application -->
    <add key="ida:CPVApplicationId" value="" />
    
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:CPVApplicationSecret" value="" />
    
    <!-- Endpoint address for the instance of Azure KeyVault -->
    <add key="KeyVaultEndpoint" value="" />
    
    <!-- AppID that is given access for keyvault to store the refresh tokens -->
    <add key="ida:KeyVaultClientId" value="" />
    
    <!--
        Please use certificate as your client secret and deploy the certificate to your environment.
        The following application secret is for sample application only. please do not use secret directly from the config file.
    -->
    <add key="ida:KeyVaultClientSecret" value="" />
    
  5. Establece los valores adecuados para las variables PartnerId y CustomerId que se encuentran en el archivo Program.cs.

    // The following properties indicate which partner and customer context the calls are going to be made.
    string PartnerId = "<Partner tenant id>";
    string CustomerId = "<Customer tenant id>";
    
  6. Al ejecutar este proyecto de ejemplo, este obtiene el token de actualización para el partner especificado. A continuación, solicita un token de acceso al Centro de partners y a Microsoft Graph en nombre del partner. La siguiente tarea que realiza es la eliminación y la creación de las concesiones de permisos en el inquilino del cliente. Dado que no hay ninguna relación entre el proveedor de panel de control y el cliente, estos permisos deben agregarse mediante la API del Centro de partners. En el siguiente ejemplo se muestra como se debe hacer.

    JObject contents = new JObject
    {
        // Provide your application display name
        ["displayName"] = "CPV Marketplace",
    
        // Provide your application id
        ["applicationId"] = CPVApplicationId,
    
        // Provide your application grants
        ["applicationGrants"] = new JArray(
            JObject.Parse("{\"enterpriseApplicationId\": \"00000003-0000-0000-c000-000000000000\", \"scope\":\"Domain.ReadWrite.All,User.ReadWrite.All,Directory.Read.All\"}"), // for Microsoft Graph access,  Directory.Read.All
            JObject.Parse("{\"enterpriseApplicationId\": \"797f4846-ba00-4fd7-ba43-dac1f8f63013\", \"scope\":\"user_impersonation\"}")) // for Azure Resource Manager access
    };
    
    /**
     * The following steps have to be performed once per customer tenant if your application is
     * a control panel vendor application and requires customer tenant Microsoft Graph access.
     **/
    
    // delete the previous grant into customer tenant
    JObject consentDeletion = await ApiCalls.DeleteAsync(
        tokenPartnerResult.Item1,
        string.Format("https://api.partnercenter.microsoft.com/v1/customers/{0}/applicationconsents/{1}", CustomerId, CPVApplicationId));
    
    // create new grants for the application given the setting in application grants payload.
    JObject consentCreation = await ApiCalls.PostAsync(
        tokenPartnerResult.Item1,
        string.Format("https://api.partnercenter.microsoft.com/v1/customers/{0}/applicationconsents", CustomerId),
        contents.ToString());
    

Una vez establecidos estos permisos, en el ejemplo se realizan las operaciones con Microsoft Graph en nombre del cliente.

Nota:

Para más información sobre Microsoft Graph, consulte Introducción a Microsoft Graph.

Java (autenticación de CPV)

  1. Desarrolla e implementa un proceso para que los partners del Proveedor de soluciones en la nube proporcionen el consentimiento adecuado. Para obtener más información y ver un ejemplo, consulta Consentimiento del asociado.

    Importante

    Las credenciales de usuario de un partner del Proveedor de soluciones en la nube no se deben almacenar. El token de actualización obtenido a través del proceso de consentimiento del partner debe almacenarse y usarse para solicitar tokens de acceso a fin de interactuar con cualquier API de Microsoft.

  2. Clona el repositorio Partner-Center-Java-Samples con el siguiente comando.

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Abre el proyecto cpvsample que se encuentra en el directorio Partner-Center-Java-Samples\secure-app-model\keyvault.

  4. Actualiza la configuración de la aplicación que se encuentra en el archivo application.properties.

    azuread.authority=https://login.microsoftonline.com
    keyvault.baseurl=
    keyvault.clientId=
    keyvault.clientSecret=
    partnercenter.accountId=
    partnercenter.clientId=
    partnercenter.clientSecret=
    partnercenter.displayName=
    

    El valor de partnercenter.displayName debe ser el nombre para mostrar de la aplicación de Marketplace.

  5. Establece los valores adecuados para las variables partnerId y customerId que se encuentran en el archivo Program.java.

    partnerId = "SPECIFY-THE-PARTNER-TENANT-ID-HERE";
    customerId = "SPECIFY-THE-CUSTOMER-TENANT-ID-HERE";
    
  6. Al ejecutar este proyecto de ejemplo, este obtiene el token de actualización para el partner especificado. A continuación, solicita un token de acceso para acceder al Centro de partners en nombre del partner. La siguiente tarea que realiza es la eliminación y la creación de las concesiones de permisos en el inquilino del cliente. Dado que no hay ninguna relación entre el proveedor de panel de control y el cliente, estos permisos deben agregarse mediante la API del Centro de partners. En el siguiente ejemplo se muestra cómo conceder los permisos.

    ApplicationGrant azureAppGrant = new ApplicationGrant();
    
    azureAppGrant.setEnterpriseApplication("797f4846-ba00-4fd7-ba43-dac1f8f63013");
    azureAppGrant.setScope("user_impersonation");
    
    ApplicationGrant graphAppGrant = new ApplicationGrant();
    
    graphAppGrant.setEnterpriseApplication("00000002-0000-0000-c000-000000000000");
    graphAppGrant.setScope("Domain.ReadWrite.All,User.ReadWrite.All,Directory.Read.All");
    
    ApplicationConsent consent = new ApplicationConsent();
    
    consent.setApplicationGrants(Arrays.asList(azureAppGrant, graphAppGrant));
    consent.setApplicationId(properties.getProperty(PropertyName.PARTNER_CENTER_CLIENT_ID));
    consent.setDisplayName(properties.getProperty(PropertyName.PARTNER_CENTER_DISPLAY_NAME));
    
    // Deletes the existing grant into the customer it is present.
    partnerOperations.getServiceClient().delete(
        partnerOperations,
        new TypeReference<ApplicationConsent>(){},
        MessageFormat.format(
            "customers/{0}/applicationconsents/{1}",
            customerId,
            properties.getProperty(PropertyName.PARTNER_CENTER_CLIENT_ID)));
    
    // Consent to the defined applications and the respective scopes.
    partnerOperations.getServiceClient().post(
        partnerOperations,
        new TypeReference<ApplicationConsent>(){},
        MessageFormat.format(
            "customers/{0}/applicationconsents",
            customerId),
        consent);
    

Quita las marcas de comentarios de las llamadas a la función RunAzureTask y RunGraphTask si quieres ver cómo se debe interactuar con Azure Resource Manager y Microsoft Graph en nombre del cliente.