Autenticação do Partner Center

Aplica-se a: Partner Center | Partner Center operado pela 21Vianet | Partner Center para o Microsoft Cloud for US Government

O Partner Center usa o Microsoft Entra ID para autenticação. Ao interagir com o módulo do PowerShell, o SDK ou a API do Partner Center, você precisa configurar corretamente um aplicativo do Microsoft Entra e, em seguida, solicitar um token de acesso. Os tokens de acesso obtidos usando apenas a autenticação de aplicativo ou a autenticação de usuário + de aplicativo podem ser usados com o Partner Center. No entanto, há dois itens importantes que precisam ser considerados

  • Use a autenticação multifator ao acessar a API do Partner Center usando a autenticação de aplicativo + usuário. Para mais informações sobre essa alteração, confira Habilitar o modelo de aplicativo seguro.

  • Nem todas as operações da API do Partner Center são compatíveis com autenticação somente do aplicativo. Em alguns cenários você precisará usar a autenticação de aplicativo + usuário. No título Pré-requisitos em cada artigo, você encontra documentação que informa se a autenticação somente de aplicativo, autenticação de aplicativo + usuário ou ambas são suportadas.

Importante

O Gráfico do Azure Active Directory (Azure AD) foi preterido a partir de 30 de junho de 2023. No futuro, não faremos mais investimentos no Azure AD Graph. As APIs do Azure AD Graph não têm SLA ou compromisso de manutenção além das correções relacionadas à segurança. Os investimentos nos novos recursos e funcionalidades só serão feitos no Microsoft Graph.

Desativaremos o Azure AD Graph em etapas incrementais para que você tenha tempo suficiente para migrar seus aplicativos para as APIs do Microsoft Graph. Em uma data posterior que anunciaremos, bloquearemos a criação de novos aplicativos usando o Azure AD Graph.

Para saber mais, consulte Importante: Aposentadoria do Graph do Azure AD e Substituição do módulo do Powershell.

Instalação inicial

  1. Para começar, você precisa verificar se tem uma conta principal do Partner Center e uma conta do Partner Center da área restrita de integração. Para obter mais informações, consulte Configurar contas do Partner Center para acesso à API. Anote a ID de registro do Aplicativo Microsoft Entra e o Segredo (o segredo do cliente é necessário para a identificação somente do Aplicativo) para sua conta principal e sua conta de área restrita de integração.

  2. Entre na ID do Microsoft Entra no portal do Azure. Em permissões para outros aplicativos, defina as permissões para o Microsoft Azure Active Directory para Permissões Delegadas e selecione Acessar o diretório como o usuário conectado e também Entrar e ler o perfil de usuário.

  3. No portal do Azure, selecione Adicionar aplicativo. Procure por "Microsoft Partner Center", que é o aplicativo Microsoft Partner Center. Defina as Permissões Delegadas para Acessar a API do Partner Center. Se você estiver usando o Partner Center for Microsoft Cloud for US Government, esta etapa é obrigatória. Se você estiver usando a instância global do Partner Center, essa etapa será opcional. Os parceiros CSP podem usar o recurso Gerenciamento de aplicativos no Partner Center para ignorar essa etapa para a instância global do Partner Center.

Autenticação somente de aplicativo

Se você quiser usar a autenticação somente de aplicativo para acessar a API REST do Partner Center, a API do .NET, a API do Java ou o módulo do PowerShell, poderá fazer isso usando as instruções a seguir.

.NET (autenticação somente de aplicativo)

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 (autenticação somente de aplicativo)

O SDK Java do Partner Center pode ser usado para gerenciar recursos do Partner Center. É um projeto de código aberto mantido pela comunidade de parceiros e não é oficialmente suportado pela Microsoft. Caso se depare com um problema, você pode obter ajuda da comunidade ou abrir um problema no GitHub.

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

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

REST (autenticação somente de aplicativo)

Solicitação 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

Resposta 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"}

Autenticação de aplicativo + de usuário

Historicamente, a concessão de credenciais de senha de proprietário do recurso foi usada para solicitar um token de acesso para uso com a API REST do Partner Center, a API do .NET, a API do Java ou o módulo do PowerShell. Esse método foi usado para solicitar um token de acesso do Microsoft Entra ID usando um identificador de cliente e credenciais de usuário. No entanto, essa abordagem não funcionará mais porque o Partner Center requer autenticação multifator ao usar a autenticação de aplicativo + usuário. Para cumprir esse requisito, a Microsoft introduziu uma estrutura segura e escalável para autenticar parceiros CSP (Provedor de Soluções em Nuvem) e CPV (fornecedores de painel de controle) usando autenticação multifator. Essa estrutura é conhecida como Modelo de Aplicativo Seguro e é composta por um processo de consentimento e uma solicitação de um token de acesso usando um token de atualização.

O processo de consentimento do parceiro é um processo interativo em que o parceiro se autentica usando a autenticação multifator, consente o aplicativo e um token de atualização é armazenado em um repositório seguro, como o Cofre de Chaves do Azure. É recomendável que uma conta dedicada para fins de integração seja usada para esse processo.

Importante

A solução de autenticação multifator apropriada deve ser habilitada para a conta de serviço usada no processo de consentimento do parceiro. Caso não seja, o token de atualização resultante não estará em conformidade com os requisitos de segurança.

Exemplos de autenticação de aplicativo + de usuário

O processo de consentimento do parceiro pode ser realizado de várias maneiras. Para ajudar os parceiros a entender como executar cada operação necessária, desenvolvemos os exemplos a seguir. Ao implementar a solução apropriada em seu ambiente, é importante que você desenvolva uma solução que esteja de acordo com seus padrões de codificação e políticas de segurança.

.NET (autenticação de aplicativo + de usuário)

O projeto de exemplo de consentimento do parceiro demonstra como utilizar um site desenvolvido usando o ASP.NET para capturar o consentimento, solicitar um token de atualização e armazená-lo com segurança no Azure Key Vault. Execute as etapas a seguir para criar os pré-requisitos necessários para este exemplo.

  1. Crie uma instância do Azure Key Vault usando o portal do Azure ou os comandos do PowerShell a seguir. Antes de executar o comando, você precisa modificar os valores de parâmetro corretamente. O nome do cofre precisa ser exclusivo.

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

    Para obter mais informações sobre como criar um Cofre de Chaves do Azure, consulte Guia de início rápido: definir e recuperar um segredo do Cofre de Chaves do Azure usando o portal do Azure ou Guia de início rápido: definir e recuperar um segredo do Cofre de Chaves do Azure usando o PowerShell. Em seguida, defina e recupere um segredo.

  2. Crie um Aplicativo Microsoft Entra e uma chave usando o portal do Azure ou os comandos a seguir.

    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)"
    

    Anote o identificador do aplicativo e os valores secretos porque eles serão usados nas etapas abaixo.

  3. Conceda ao aplicativo Microsoft Entra recém-criado as permissões de segredos de leitura usando o portal do Azure ou os comandos a seguir.

    # 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. Crie um aplicativo Microsoft Entra configurado para o Partner Center. Use os procedimentos a seguir para concluir esta etapa.

    Documente os valores de ID do aplicativo, ID da conta* e Chave porque eles serão usados nas etapas abaixo.

  5. Clone o repositório Partner-Center-DotNet-Samples usando o Visual Studio ou o comando a seguir.

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  6. Abra o projeto PartnerConsent encontrado no diretório Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  7. Preencha as configurações do aplicativo encontradas no 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

    Informações confidenciais, como segredos do aplicativo, não devem ser armazenadas em arquivos de configuração. Isso foi feito aqui porque este é um aplicativo de exemplo. Com seu aplicativo de produção, é altamente recomendável que você use a autenticação baseada em certificado. Para obter mais informações, confira Credenciais de certificado para autenticação de aplicativos.

  8. Quando você executa esse projeto de exemplo, ele solicita autenticação. Após a autenticação bem-sucedida, um token de acesso é solicitado ao Microsoft Entra ID. As informações retornadas da ID do Microsoft Entra incluem um token de atualização armazenado na instância configurada do Cofre de Chaves do Azure.

Java (autenticação de aplicativo + de usuário)

O projeto de exemplo de consentimento do parceiro demonstra como utilizar um site desenvolvido usando JSP para capturar o consentimento, solicitar um token de atualização e armazená-lo com segurança no Azure Key Vault. Execute os procedimentos a seguir para criar os pré-requisitos necessários para este exemplo.

  1. Crie uma instância do Azure Key Vault usando o portal do Azure ou os comandos do PowerShell a seguir. Antes de executar o comando, você precisa modificar os valores de parâmetro corretamente. O nome do cofre precisa ser exclusivo.

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

    Para obter mais informações sobre como criar um Cofre de Chaves do Azure, consulte Guia de início rápido: definir e recuperar um segredo do Cofre de Chaves do Azure usando o portal do Azure ou Guia de início rápido: definir e recuperar um segredo do Cofre de Chaves do Azure usando o PowerShell.

  2. Crie um Aplicativo Microsoft Entra e uma chave usando o portal do Azure ou os comandos a seguir.

    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)"
    

    Documente o identificador do aplicativo e os valores secretos porque eles serão usados nas etapas abaixo.

  3. Conceda ao aplicativo Microsoft Entra recém-criado as permissões de segredos de leitura usando o portal do Azure ou os comandos a seguir.

    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. Crie um aplicativo Microsoft Entra configurado para o Partner Center. Execute os procedimentos a seguir para concluir esta etapa.

    Documente os valores de ID do aplicativo, ID da conta* e Chave porque eles serão usados nas etapas abaixo.

  5. Clone o repositório Partner-Center-Java-Samples usando o comando a seguir

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  6. Abra o projeto PartnerConsent encontrado no diretório Partner-Center-Java-Samples\secure-app-model\keyvault.

  7. Preencha as configurações do aplicativo encontradas no arquivo 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

    Informações confidenciais, como segredos do aplicativo, não devem ser armazenadas em arquivos de configuração. Isso foi feito aqui porque este é um aplicativo de exemplo. Com seu aplicativo de produção, é altamente recomendável que você use a autenticação baseada em certificado. Confira Autenticação de certificado do Key Vault para obter mais informações.

  8. Quando você executa esse projeto de exemplo, ele solicita autenticação. Após a autenticação bem-sucedida, um token de acesso é solicitado ao Microsoft Entra ID. As informações retornadas da ID do Microsoft Entra incluem um token de atualização armazenado na instância configurada do Cofre de Chaves do Azure.

Autenticação de Provedor de Soluções na Nuvem

Parceiros do Provedor de Soluções na Nuvem podem usar o token de atualização obtido por meio do processo de consentimento do parceiro.

Exemplos para autenticação de Provedor de Soluções na Nuvem

Para ajudar os parceiros a entender como executar cada operação necessária, desenvolvemos os exemplos a seguir. Ao implementar a solução apropriada em seu ambiente, é importante que você desenvolva uma solução que esteja de acordo com seus padrões de codificação e políticas de segurança.

.NET (autenticação do CSP)

  1. Se você ainda não tiver feito isso, execute o processo de consentimento do parceiro.

  2. Clone o repositório Partner-Center-DotNet-Samples usando o Visual Studio ou o comando a seguir

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Abra o projeto CSPApplication encontrado no diretório Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  4. Atualize as configurações do aplicativo encontradas no arquivo 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. Defina os valores apropriados para as variáveis PartnerId e CustomerId encontradas no arquivo 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. Quando você executa este projeto de exemplo, ele obtém o token de atualização obtido durante o processo de consentimento do parceiro. Em seguida, ele solicita um token de acesso para interagir com o SDK do Partner Center em nome do parceiro. Por fim, ele solicita um token de acesso para interagir com Microsoft Graph em nome do cliente especificado.

Java (autenticação do CSP)

  1. Se você ainda não tiver feito isso, execute o processo de consentimento do parceiro.

  2. Clone o repositório Partner-Center-Java-Samples usando o Visual Studio ou o comando a seguir

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Abra o projeto cspsample encontrado no diretório Partner-Center-Java-Samples\secure-app-model\keyvault.

  4. Atualize as configurações do aplicativo encontradas no arquivo application.properties.

    azuread.authority=https://login.microsoftonline.com
    keyvault.baseurl=
    keyvault.clientId=
    keyvault.clientSecret=
    partnercenter.accountId=
    partnercenter.clientId=
    partnercenter.clientSecret=
    
  5. Quando você executa este projeto de exemplo, ele obtém o token de atualização obtido durante o processo de consentimento do parceiro. Em seguida, ele solicita um token de acesso para interagir com o SDK do Partner Center em nome do parceiro.

  6. Opcional – remova as marcas de comentário das chamadas de função RunAzureTask e RunGraphTask se você quiser saber como interagir com o Azure Resource Manager e o Microsoft Graph em nome do cliente.

Autenticação de provedor de painel de controle

Os fornecedores de painel de controle precisam que cada parceiro ao qual eles dão suporte execute o processo de consentimento do parceiro. Após a conclusão desse processo, o token de atualização obtido por meio dele é usado para acessar a API REST do Partner Center e a API do .NET.

Observação

Os fornecedores do painel de controle devem ter, no mínimo, a função de Administrador de aplicativos de nuvem no locatário do cliente.

Exemplos para autenticação de provedor de painel na nuvem

Para ajudar os fornecedores de painéis de controle a entender como executar cada operação necessária, desenvolvemos os exemplos a seguir. Ao implementar a solução apropriada em seu ambiente, é importante que você desenvolva uma solução que esteja de acordo com seus padrões de codificação e políticas de segurança.

.NET (autenticação de CPV)

  1. Desenvolva e implante um processo para que parceiros do Provedor de Soluções na Nuvem forneçam o consentimento apropriado. Para obter mais informações e um exemplo, confira consentimento do parceiro.

    Importante

    As credenciais do usuário de um parceiro do Provedor de Soluções na Nuvem não devem ser armazenadas. O token de atualização obtido por meio do processo de consentimento do parceiro deve ser armazenado e usado para solicitar tokens de acesso para interagir com qualquer API da Microsoft.

  2. Clone o repositório Partner-Center-DotNet-Samples usando o Visual Studio ou o comando a seguir

    git clone https://github.com/Microsoft/Partner-Center-DotNet-Samples.git
    
  3. Abra o projeto CPVApplication encontrado no diretório Partner-Center-DotNet-Samples\secure-app-model\keyvault.

  4. Atualize as configurações do aplicativo encontradas no arquivo 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. Defina os valores apropriados para as variáveis PartnerId e CustomerId encontradas no arquivo 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. Quando você executa esse projeto de exemplo, ele obtém o token de atualização para o parceiro especificado. Em seguida, ele solicita um token de acesso para acessar o Partner Center e o Microsoft Graph em nome do parceiro. A próxima tarefa que ele executa é a exclusão e a criação de concessões de permissão no locatário do cliente. Já que não há nenhuma relação entre o fornecedor de painel de controle e o cliente, essas permissões precisam ser adicionadas usando a API da Central de Parceiros. O exemplo a seguir mostra como fazer isso.

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

Depois que essas permissões tiverem sido estabelecidas, o exemplo executará operações usando o Microsoft Graph em nome do cliente.

Observação

Para obter mais informações sobre o Microsoft Graph, confira a Visão geral do Microsoft Graph.

Java (autenticação CPV)

  1. Desenvolva e implante um processo para que parceiros do Provedor de Soluções na Nuvem forneçam o consentimento apropriado. Para obter mais informações e um exemplo, confira consentimento do parceiro.

    Importante

    As credenciais do usuário de um parceiro do Provedor de Soluções na Nuvem não devem ser armazenadas. O token de atualização obtido por meio do processo de consentimento do parceiro deve ser armazenado e usado para solicitar tokens de acesso para interagir com qualquer API da Microsoft.

  2. Clone o repositório Partner-Center-Java-Samples usando o comando a seguir

    git clone https://github.com/Microsoft/Partner-Center-Java-Samples.git
    
  3. Abra o projeto cpvsample encontrado no diretório Partner-Center-Java-Samples\secure-app-model\keyvault.

  4. Atualize as configurações do aplicativo encontradas no arquivo application.properties.

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

    O valor para o partnercenter.displayName deve ser o nome de exibição do seu aplicativo do marketplace.

  5. Defina os valores apropriados para as variáveis partnerId e customerId encontradas no arquivo Program.java.

    partnerId = "SPECIFY-THE-PARTNER-TENANT-ID-HERE";
    customerId = "SPECIFY-THE-CUSTOMER-TENANT-ID-HERE";
    
  6. Quando você executa esse projeto de exemplo, ele obtém o token de atualização para o parceiro especificado. Em seguida, ele solicita um token de acesso para acessar o Partner Center em nome do parceiro. A próxima tarefa que ele executa é a exclusão e a criação de concessões de permissão no locatário do cliente. Já que não há nenhuma relação entre o fornecedor de painel de controle e o cliente, essas permissões precisam ser adicionadas usando a API da Central de Parceiros. O exemplo a seguir mostra como conceder as permissões.

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

Remova as marcas de comentário das chamadas de função RunAzureTask e RunGraphTask se você quiser saber como interagir com o Azure Resource Manager e o Microsoft Graph em nome do cliente.