Autenticação no Centro de Parceiros

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

O Centro de Parceiros utiliza o Microsoft Entra ID para autenticação. Ao interagir com o módulo do PowerShell, o SDK ou a API do Centro de Parceiros, tem de configurar corretamente uma aplicação do Microsoft Entra e, em seguida, pedir um token de acesso. Os tokens de acesso obtidos usando apenas o aplicativo ou a autenticação do aplicativo + usuário 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 obter mais informações sobre essa alteração, consulte Habilitar modelo de aplicativo seguro.

  • Nem todas as operações da API do Partner Center suportam apenas autenticação. Há certos cenários em que você será obrigado a usar a autenticação de aplicativo + usuário. No título Pré-requisitos de cada artigo, você encontrará documentação que indica se a autenticação somente aplicativo, autenticação aplicativo + usuário ou ambas são suportadas.

Importante

O Azure Ative Directory (Azure AD) Graph 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 em 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 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 Azure AD Graph e Descontinuação do módulo Powershell.

Configuração inicial

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

  2. Inicie sessão no Microsoft Entra ID a partir do portal do Azure. Em permissões para outros aplicativos, defina permissões para o Ative Directory do Windows Azure como Permissões Delegadas e selecione Acessar o diretório como o usuário conectado e Entrar e ler o perfil de usuário.

  3. No portal do Azure, 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 estiver a utilizar o Partner Center for Microsoft Cloud for US Government, este passo é obrigatório. Se você estiver usando a instância global do Partner Center, esta etapa será opcional. Os Parceiros CSP podem usar o recurso Gerenciamento de Aplicativos no Partner Center para ignorar esta 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 .NET, a API Java ou o módulo PowerShell, poderá fazê-lo usando as instruções a seguir.

.NET (autenticação somente 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 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 suportado oficialmente pela Microsoft. Você pode obter ajuda da comunidade ou abrir um problema no GitHub se tiver um problema.

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

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

REST (autenticação somente aplicativo)

Pedido 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 do 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"}

Aplicação + Autenticação do utilizador

Historicamente, a concessão de credenciais de senha do proprietário do recurso tem sido usada para solicitar um token de acesso para uso com a API REST DO PARTNER CENTER, API .NET, API Java ou módulo 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 na Nuvem) e fornecedores de painéis de controle (CPV) 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 com o aplicativo e um token de atualização é armazenado em um repositório seguro, como o Azure Key Vault. Recomendamos 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. Se não for, o token de atualização resultante não será compatível com os requisitos de segurança.

Exemplos para autenticação de aplicativo + 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 seguintes exemplos. Ao implementar a solução apropriada em seu ambiente, é importante desenvolver uma solução que esteja de acordo com seus padrões de codificação e políticas de segurança.

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

O projeto de exemplo de consentimento de parceiro demonstra como utilizar um site desenvolvido usando ASP.NET para capturar consentimento, solicitar um token de atualização e armazená-lo com segurança no Cofre de Chaves do Azure. 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 seguintes comandos do PowerShell. Antes de executar o comando, certifique-se de modificar os valores dos parâmetros de acordo. O nome do cofre deve 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)"
    

    Certifique-se de anotar o identificador do aplicativo e os valores secretos, pois 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. Execute as seguintes ações para concluir esta etapa.

    Certifique-se de documentar o ID do aplicativo, o ID da conta* e os valores da chave, pois 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 Partner-Center-DotNet-Samples\secure-app-model\keyvault diretório.

  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 de aplicativos, não devem ser armazenadas em arquivos de configuração. Foi feito aqui porque esta é uma aplicação de exemplo. Com seu aplicativo de produção, recomendamos que você use a autenticação baseada em certificado. Para obter mais informações, consulte Credenciais de certificado para autenticação de aplicativos.

  8. Quando você executa este 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 que é armazenado na instância configurada do Cofre de Chaves do Azure.

Java (autenticação app+user)

O projeto de exemplo de consentimento de parceiro demonstra como utilizar um site desenvolvido usando JSP para capturar consentimento, solicitar um token de atualização e armazenar seguro no Cofre de Chaves do Azure. Execute o seguinte 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 seguintes comandos do PowerShell. Antes de executar o comando, certifique-se de modificar os valores dos parâmetros de acordo. O nome do cofre deve 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)"
    

    Certifique-se de documentar o identificador do aplicativo e os valores secretos, pois 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 o seguinte para concluir esta etapa.

    Certifique-se de documentar o ID do aplicativo, o ID da conta* e os valores da chave, pois eles serão usados nas etapas abaixo.

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

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

  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 de aplicativos, não devem ser armazenadas em arquivos de configurações. Foi feito aqui porque esta é uma aplicação 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, consulte Autenticação de certificado do Key Vault.

  8. Quando você executa este 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 que é armazenado na instância configurada do Cofre de Chaves do Azure.

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

Os 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 do Provedor de Soluções na Nuvem

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

.NET (autenticação CSP)

  1. Se ainda não o fez, execute o processo de consentimento do parceiro.

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

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

  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. Finalmente, ele solicita um token de acesso para interagir com o Microsoft Graph em nome do cliente especificado.

Java (autenticação CSP)

  1. Se ainda não o fez, execute o processo de consentimento do parceiro.

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

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

  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 - descomente as chamadas de função RunAzureTask e RunGraphTask se quiser ver como interagir com o Azure Resource Manager e o Microsoft Graph em nome do cliente.

Autenticação do Provedor do Painel de Controle

Os fornecedores do painel de controle precisam que cada parceiro ao qual dão suporte execute o processo de consentimento do parceiro. Quando isso for concluído, o token de atualização obtido por meio desse processo será usado para acessar a API REST do Partner Center e a API .NET.

Nota

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

Exemplos para autenticação do Cloud Panel Provider

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

.NET (autenticação CPV)

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

    Importante

    As credenciais de 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 seguinte comando

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

  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 este 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 criação de concessões de permissão para o locatário do cliente. Como não há nenhuma relação entre o fornecedor do painel de controle e o cliente, essas permissões precisam ser adicionadas usando a API do Partner Center. 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 foram estabelecidas, o exemplo executa operações usando o Microsoft Graph em nome do cliente.

Nota

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

Java (autenticação CPV)

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

    Importante

    As credenciais de 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 seguinte comando

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

  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 de mercado.

  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 este 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 criação de concessões de permissão para o locatário do cliente. Como não há nenhuma relação entre o fornecedor do painel de controle e o cliente, essas permissões precisam ser adicionadas usando a API do Partner Center. 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);
    

Descomente as chamadas de função RunAzureTask e RunGraphTask se quiser ver como interagir com o Azure Resource Manager e o Microsoft Graph em nome do cliente.