Autenticação do Partner CenterPartner Center authentication

Aplica-se a:Applies to:

  • Partner CenterPartner Center
  • Partner Center operado pela 21VianetPartner Center operated by 21Vianet
  • Partner Center do Microsoft Cloud GermanyPartner Center for Microsoft Cloud Germany
  • Partner Center do Microsoft Cloud for US GovernmentPartner Center for Microsoft Cloud for US Government

A Central de Parceiros usa o Azure Active Directory para autenticação.Partner Center uses Azure Active Directory for authentication. Ao interagir com o módulo do PowerShell, o SDK ou a API do Partner Center, você precisa configurar corretamente um aplicativo do Azure AD e, em seguida, solicitar um token de acesso.When interacting with the Partner Center API, SDK, or PowerShell module you must correctly configure an Azure AD application and then request an access token. 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.Access tokens obtained using app only or app + user authentication can be used with the Partner Center. No entanto, há dois itens importantes que precisam ser consideradosHowever, there are two important items that need to be considered

  • Utilize a autenticação multifator ao acessar a API da Central de Parceiros usando a autenticação de aplicativo + usuário.Use multi-factor authentication when accessing the Partner Center API using app + user authentication. Para mais informações sobre essa alteração, confira Habilitar o modelo de aplicativo seguro.For more information regarding this change, see Enable secure application model.

  • Nem todas as operações da API do Partner Center são compatíveis com autenticação somente do aplicativo.Not all of the operations the Partner Center API support app only authentication. Em alguns cenários você precisará usar a autenticação de aplicativo + usuário.There are certain scenarios where you'll be required to use app + user authentication. No título Pré-requisitos em cada artigo (Scenario/partner-center/develop/scenarios), você encontrará a documentação que indica se a autenticação somente do aplicativo, a autenticação de aplicativo + a de usuário ou ambas têm suporte.Under the Prerequisites heading on each [Scenario/partner-center/develop/scenarios) article, you'll find documentation that states whether app only authentication, app + user authentication, or both are supported.

Instalação inicialInitial setup

  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.To begin, you need to make sure that you have both a primary Partner Center account, and an integration sandbox Partner Center account. Para obter mais informações, consulte Configurar contas do Partner Center para ter acesso à API.For more information, see Set up Partner Center accounts for API access. Anote a ID de registro do aplicativo do Azure AAD e o segredo (o segredo do cliente é necessário para a identificação somente do aplicativo) para sua conta principal e a sua conta da área restrita da integração.Make note of the Azure AAD App registration ID and Secret (client secret is required for App only identification) for both your primary account and your integration sandbox account.

  2. Entre no Azure AD pelo portal do Azure.Sign in to Azure AD from the Azure portal. 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.In permissions to other applications, set permissions for Windows Azure Active Directory to Delegated Permissions, and select both Access the directory as the signed-in user and Sign in and read user profile.

  3. No portal do Azure, selecione Adicionar aplicativo.In the Azure portal, Add application. Pesquise por "Microsoft Partner Center", que é o aplicativo de mesmo nome.Search for "Microsoft Partner Center", which is the Microsoft Partner Center application. Defina as Permissões Delegadas para Acessar a API do Partner Center.Set the Delegated Permissions to Access Partner Center API. Se você estiver usando o Partner Center para Microsoft Cloud Germany ou o Partner Center para Microsoft Cloud for US Government, essa etapa será obrigatória.If you are using Partner Center for Microsoft Cloud Germany or Partner Center for Microsoft Cloud for US Government, this step is mandatory. Se você está usando a instância global do Partner Center, essa etapa é opcional.If you are using Partner Center global instance, this step is optional. Os parceiros CSP podem usar o recurso de Gerenciamento de Aplicativos no portal do Partner Center para ignorar essa etapa para a instância global do Partner Center.CSP Partners can use the App Management feature in the Partner Center portal to bypass this step for Partner Center global instance.

Autenticação somente de aplicativoApp-only authentication

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.If you would like to use app-only authentication to access the Partner Center REST API, .NET API, Java API, or PowerShell module then you can do so by leveraging the following instructions.

.NET (autenticação somente de aplicativo).NET (app-only authentication)

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)Java (app-only authentication)

O SDK do Java do Partner Center geralmente é usado por parceiros para gerenciar os recursos do Partner Center.The Partner Center Java SDK is commonly used by partners to manage their Partner Center resources. É um projeto de software livre mantido pela comunidade de parceiros.It's an open-source project maintained by the partner community. Esse módulo é mantido pela comunidade de parceiros e, por isso, não tem suporte oficial da Microsoft.Since this module is maintained by the partner community, it isn't officially supported by Microsoft. Caso se depare com um problema, você pode obter ajuda da comunidade ou abrir um problema no GitHub.You can get help from the community or open an issue on GitHub if you experience a problem.

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)REST (app-only authentication)

Solicitação RESTREST request

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 RESTREST response

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árioApp + User authentication

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.Historically the resource owner password credentials grant has been used to request an access token for use with the Partner Center REST API, .NET API, Java API, or PowerShell module. Esse método era usado para solicitar um token de acesso do Azure Active Directory usando um identificador de cliente e credenciais de usuário.That method was used to request an access token from Azure Active Directory using a client identifier and user credentials. Entretanto, essa abordagem não funcionará mais porque a Central de Parceiros requer autenticação multifator ao usar a autenticação de aplicativo + usuário.However, this approach will no longer work because Partner Center requires multi-factor authentication, when using app + user authentication. Para estar em conformidade com esse requisito, a Microsoft introduziu uma estrutura segura e escalonável para autenticar parceiros do CSP (Provedor de Soluções na Nuvem) e CPVs (fornecedores de painel de controle) usando a autenticação multifator.To comply with this requirement Microsoft has introduced a secure, scalable framework for authenticating Cloud Solution Provider (CSP) partners and control panel vendors (CPV) using multi-factor authentication. Essa estrutura é conhecida como Modelo de Aplicativo Seguro e é composta por um processo de consentimento e uma solicitação de token de acesso usando um token de atualização.This framework is known as the Secure Application Model, and it is composed of a consent process and a request for an access token using a refresh token.

O processo de consentimento do parceiro é um processo interativo em que o parceiro se autentica usando a autenticação multifator, concorda com o aplicativo e um token de atualização é armazenado em um repositório seguro, como Azure Key Vault.The partner consent process is an interactive process where the partner authenticates using multi-factor authentication, consents to the application, and a refresh token is stored in a secure repository such as Azure Key Vault. É recomendável que uma conta dedicada para fins de integração seja usada para esse processo.We recommend that a dedicated account for integration purposes be used for this process.

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.The appropriate multi-factor authentication solution should be enabled for the service account used in the partner consent process. Caso não seja, o token de atualização resultante não estará em conformidade com os requisitos de segurança.If it isn't then the resulting refresh token will not be compliant with security requirements.

Exemplos de autenticação de aplicativo + de usuárioSamples for App + User authentication

O processo de consentimento do parceiro pode ser executado de várias maneiras.The partner consent process can be performed in a number of ways. Para ajudar os parceiros a entenderem como realizar cada operação necessária, desenvolvemos os exemplos a seguir.To help partners understand how to perform each required operation, we have developed the following samples. Quando você implementa a solução apropriada em seu ambiente, é importante que você desenvolva uma solução que esteja em conformidade com seus padrões de codificação e políticas de segurança.When you implement the appropriate solution in your environment, it is important that you develop a solution that is complaint with your coding standards and security policies.

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

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.The partner consent sample project demonstrates how to utilize a website developed using ASP.NET to capture consent, request a refresh token, and securely store it in Azure Key Vault. Execute as etapas a seguir para criar os pré-requisitos necessários para este exemplo.Perform the following steps to create the required prerequisites for this sample.

  1. Crie uma instância do Azure Key Vault usando o portal do Azure ou os comandos do PowerShell a seguir.Create an instance of Azure Key Vault using the Azure portal or the following PowerShell commands. Antes de executar o comando, você precisa modificar os valores de parâmetro corretamente.Before executing the command, be sure to modify the parameter values accordingly. O nome do cofre precisa ser exclusivo.The vault name must be unique.

    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 Azure Key Vault, confira [Início rápido: definir e recuperar um segredo de Azure Key Vault usando o portal do Azure/azure/key-vault/quick-create-portal) ou [Início rápido: definir e recuperar um segredo de Azure Key Vault usando o PowerShell/azure/key-vault/quick-create-powershell).For more information about creating an Azure Key Vault, see [Quickstart: Set and retrieve a secret from Azure Key Vault using the Azure portal/azure/key-vault/quick-create-portal) or [Quickstart: Set and retrieve a secret from Azure Key Vault using PowerShell/azure/key-vault/quick-create-powershell). Em seguida, defina e recupere um segredo.Then set and retrieve a secret.

  2. Crie um aplicativo do Azure AD e uma chave usando o portal do Azure ou os comandos a seguir.Create an Azure AD Application and a key using the Azure portal or the following commands.

    Connect-AzureAD
    
    $SessionInfo = Get-AzureADCurrentSessionInfo
    
    $app = New-AzureADApplication -DisplayName 'My Vault Access App' -IdentifierUris 'https://$($SessionInfo.TenantDomain)/$((New-Guid).ToString())'
    $password = New-AzureADApplicationPasswordCredential -ObjectId $app.ObjectId
    
    Write-Host "ApplicationId       = $($app.AppId)"
    Write-Host "ApplicationSecret   = $($password.Value)"
    

    Anote o identificador do aplicativo e os valores secretos porque eles serão usados nas etapas abaixo.Be sure to make note of the application identifier and secret values because they'll be used in the steps below.

  3. Conceda ao novo aplicativo do Azure AD permissões de leitura de segredos usando o portal do Azure ou os comandos a seguir.Grant the newly create Azure AD application the read secrets permissions using the Azure portal or the following commands.

    $app = Get-AzureADApplication -Filter {AppId -eq 'ENTER-APP-ID-HERE'}
    
    Set-AzureRmKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.ObjectId -PermissionsToSecrets get
    
  4. Crie um aplicativo do Azure AD configurado para o Partner Center.Create an Azure AD application that is configured for Partner Center. Use os procedimentos a seguir para concluir esta etapa.Perform the following actions to complete this step.

    • Navegue até o recurso Gerenciamento de aplicativos do Painel do Partner CenterBrowse to the App management feature of the Partner Center Dashboard
    • Clique em Adicionar novo aplicativo Web para criar um aplicativo do Azure AD.Click Add new web app to create a new Azure AD application.

    Documente os valores de ID do aplicativo, ID da conta* e Chave porque eles serão usados nas etapas abaixo.Be sure to document the App ID, *Account ID**, and Key values because they'll be used in the steps below.

  5. Clone o repositório Partner-Center-DotNet-Samples usando o Visual Studio ou o comando a seguir.Clone the Partner-Center-DotNet-Samples repository using Visual Studio or the following command.

    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.Open the PartnerConsent project found in the Partner-Center-DotNet-Samples\secure-app-model\keyvault directory.

  7. Preencha as configurações do aplicativo encontradas no web.configPopulate the application settings found in the 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.Sensitive information such as application secrets should not be stored in configuration files. Isso foi feito aqui porque este é um aplicativo de exemplo.It was done here because this is a sample application. Com seu aplicativo de produção, é altamente recomendável que você use a autenticação baseada em certificado.With your production application we strongly recommend that you use certificate-based authentication. Para obter mais informações, confira [Credenciais de certificado para autenticação de aplicativo/azure/active-directory/develop/active-directory-certificate-credentials).For more information, see [Certificate credentials for application authentication/azure/active-directory/develop/active-directory-certificate-credentials).

  8. Quando você executar este projeto de exemplo, ele solicitará sua autenticação.When you run this sample project, it will prompt you for authentication. Após uma autenticação bem-sucedida, um token de acesso é solicitado do Azure AD.After successfully authenticating, an access token is requested from Azure AD. As informações retornadas do Azure AD incluem um token de atualização armazenado na instância configurada do Azure Key Vault.The information returned from Azure AD includes a refresh token that is stored in the configured instance of Azure Key Vault.

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

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.The partner consent sample project demonstrates how to utilize a website developed using JSP to capture consent, request a refresh token, and secure store in Azure Key Vault. Execute os procedimentos a seguir para criar os pré-requisitos necessários para este exemplo.Perform the following to create the required prerequisites for this sample.

  1. Crie uma instância do Azure Key Vault usando o portal do Azure ou os comandos do PowerShell a seguir.Create an instance of Azure Key Vault using the Azure portal or the following PowerShell commands. Antes de executar o comando, você precisa modificar os valores de parâmetro corretamente.Before executing the command, be sure to modify the parameter values accordingly. O nome do cofre precisa ser exclusivo.The vault name must be unique.

    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 Azure Key Vault, confira [Início rápido: definir e recuperar um segredo de Azure Key Vault usando o portal do Azure/azure/key-vault/quick-create-portal) ou [Início rápido: definir e recuperar um segredo de Azure Key Vault usando o PowerShell/azure/key-vault/quick-create-powershell).For more information about creating an Azure Key Vault, see [Quickstart: Set and retrieve a secret from Azure Key Vault using the Azure portal/azure/key-vault/quick-create-portal) or [Quickstart: Set and retrieve a secret from Azure Key Vault using PowerShell/azure/key-vault/quick-create-powershell).

  2. Crie um aplicativo do Azure AD e uma chave usando o portal do Azure ou os comandos a seguir.Create an Azure AD Application and a key using the Azure portal or the following commands.

    Connect-AzureAD
    
    $SessionInfo = Get-AzureADCurrentSessionInfo
    
    $app = New-AzureADApplication -DisplayName 'My Vault Access App' -IdentifierUris 'https://$($SessionInfo.TenantDomain)/$((New-Guid).ToString())'
    $password = New-AzureADApplicationPasswordCredential -ObjectId $app.ObjectId
    
    Write-Host "ApplicationId       = $($app.AppId)"
    Write-Host "ApplicationSecret   = $($password.Value)"
    

    Documente o identificador do aplicativo e os valores secretos porque eles serão usados nas etapas abaixo.Be sure to document the application identifier and secret values because they'll be used in the steps below.

  3. Conceda ao novo aplicativo Azure AD permissões de leitura de segredos usando o portal do Azure ou os comandos a seguir.Grant the newly created Azure AD application the read secrets permissions using the Azure portal or the following commands.

    $app = Get-AzureADApplication -Filter {AppId -eq 'ENTER-APP-ID-HERE'}
    
    Set-AzureRmKeyVaultAccessPolicy -VaultName ContosoVault -ObjectId $app.ObjectId -PermissionsToSecrets get
    
  4. Crie um aplicativo do Azure AD configurado para o Partner Center.Create an Azure AD application that is configured for Partner Center. Execute os procedimentos a seguir para concluir esta etapa.Perform the following to complete this step.

    • Navegue até o recurso Gerenciamento de aplicativos do Painel do Partner CenterBrowse to the App management feature of the Partner Center Dashboard
    • Clique em Adicionar novo aplicativo Web para criar um aplicativo do Azure AD.Click Add new web app to create a new Azure AD application.

    Documente os valores de ID do aplicativo, ID da conta* e Chave porque eles serão usados nas etapas abaixo.Be sure to document the App ID, *Account ID**, and Key values because they'll be used in the steps below.

  5. Clone o repositório Partner-Center-Java-Samples usando o comando a seguirClone the Partner-Center-Java-Samples repository using the following command

    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.Open the PartnerConsent project found in the Partner-Center-Java-Samples\secure-app-model\keyvault directory.

  7. Preencha as configurações do aplicativo encontradas no arquivo web.xmlPopulate the application settings found in the web.xml file

    <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.Sensitive information such as application secrets should not be stored in configurations files. Isso foi feito aqui porque este é um aplicativo de exemplo.It was done here because this is a sample application. Com seu aplicativo de produção, é altamente recomendável que você use a autenticação baseada em certificado.With your production application, we strongly recommend that you use certificate based authenticate. Confira Autenticação de certificado do Key Vault para obter mais informações.For more information, see Key Vault Certificate authentication.

  8. Quando você executar este projeto de exemplo, ele solicitará sua autenticação.When you run this sample project, it will prompt you for authentication. Após uma autenticação bem-sucedida, um token de acesso é solicitado do Azure AD.After successfully authenticating, an access token is requested from Azure AD. As informações retornadas do Azure AD incluem um token de atualização armazenado na instância configurada do Azure Key Vault.The information returned from Azure AD includes a refresh token that is stored in the configured instance of Azure Key Vault.

Autenticação de Provedor de Soluções na NuvemCloud Solution Provider authentication

Parceiros do Provedor de Soluções na Nuvem podem usar o token de atualização obtido por meio do processo de consentimento do parceiro.Cloud Solution Provider partners can use the refresh token obtained through the partner consent process.

Exemplos para autenticação de Provedor de Soluções na NuvemSamples for Cloud Solution Provider authentication

Para ajudar os parceiros a entenderem como realizar cada operação necessária, desenvolvemos os exemplos a seguir.To help partners understand how to perform each required operation, we have developed the following samples. Quando você implementa a solução apropriada em seu ambiente, é importante que você desenvolva uma solução que esteja em conformidade com seus padrões de codificação e políticas de segurança.When you implement the appropriate solution in your environment, it is important that you develop a solution that is complaint with your coding standards and security policies.

.NET (autenticação do CSP).NET (CSP authentication)

  1. Se você ainda não tiver feito isso, execute o processo de consentimento do parceiro.If you have not already done so, perform the partner consent process.

  2. Clone o repositório Partner-Center-DotNet-Samples usando o Visual Studio ou o comando a seguirClone the Partner-Center-DotNet-Samples repository using Visual Studio or the following command

    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.Open the CSPApplication project found in the Partner-Center-DotNet-Samples\secure-app-model\keyvault directory.

  4. Atualize as configurações do aplicativo encontradas no arquivo App.config.Update the application settings found in the App.config file.

    <!-- 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.Set the appropriate values for the PartnerId and CustomerId variables found in the Program.cs file.

    // 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.When you run this sample project, it obtains the refresh token obtained during the partner consent process. Em seguida, ele solicita um token de acesso para interagir com o SDK do Partner Center em nome do parceiro.Then, it requests an access token to interact with the Partner Center SDK on the partner's behalf. Por fim, ele solicita um token de acesso para interagir com Microsoft Graph em nome do cliente especificado.Finally, it requests an access token to interact with Microsoft Graph on behalf of the specified customer.

Java (autenticação do CSP)Java (CSP authentication)

  1. Se você ainda não tiver feito isso, execute o processo de consentimento do parceiro.If you have not done so already, perform the partner consent process.

  2. Clone o repositório Partner-Center-Java-Samples usando o Visual Studio ou o comando a seguirClone the Partner-Center-Java-Samples repository using Visual Studio or the following command

    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.Open the cspsample project found in the Partner-Center-Java-Samples\secure-app-model\keyvault directory.

  4. Atualize as configurações do aplicativo encontradas no arquivo application.properties.Update the application settings found in the application.properties file.

    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.When you run this sample project, it obtains the refresh token obtained during the partner consent process. Em seguida, ele solicita um token de acesso para interagir com o SDK do Partner Center em nome do parceiro.Then, it requests an access token to interact with the Partner Center SDK on the partner's behalf.

  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.Optional - uncomment the RunAzureTask and RunGraphTask function calls if you want to see how to interact with Azure Resource Manager and Microsoft Graph on behalf of the customer.

Autenticação de provedor de painel de controleControl Panel Provider authentication

Os fornecedores de painel de controle precisam que cada parceiro ao qual eles dão suporte execute o processo de consentimento do parceiro.Control panel vendors need to have each partner they support perform the partner consent process. 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.Once that is completed the refresh token obtained through that process is used to access the Partner Center REST API and .NET API.

Exemplos para autenticação de provedor de painel na nuvemSamples for Cloud Panel Provider authentication

Para ajudar os fornecedores de painel de controle a entenderem como realizar cada operação necessária, desenvolvemos os exemplos a seguir.To help control panel vendors understand how to perform each required operation, we have developed the following samples. Quando você implementa a solução apropriada em seu ambiente, é importante que você desenvolva uma solução que esteja em conformidade com seus padrões de codificação e políticas de segurança.When you implement the appropriate solution in your environment, it is important that you develop a solution that is complaint with your coding standards and security policies.

.NET (autenticação de CPV).NET (CPV authentication)

  1. Desenvolva e implante um processo para que parceiros do Provedor de Soluções na Nuvem forneçam o consentimento apropriado.Develop and deploy a process for Cloud Solution Provider partners to provide the appropriate consent. Para obter mais informações e um exemplo, confira consentimento do parceiro.For more information an example, see partner consent.

    Importante

    As credenciais do usuário de um parceiro do Provedor de Soluções na Nuvem não devem ser armazenadas.User credentials from a Cloud Solution Provider partner should not be stored. 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.The refresh token obtained through the partner consent process should be stored and used to request access tokens for interacting with any Microsoft API.

  2. Clone o repositório Partner-Center-DotNet-Samples usando o Visual Studio ou o comando a seguirClone the Partner-Center-DotNet-Samples repository using Visual Studio or the following command

    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.Open the CPVApplication project found in the Partner-Center-DotNet-Samples\secure-app-model\keyvault directory.

  4. Atualize as configurações do aplicativo encontradas no arquivo App.config.Update the application settings found in the App.config file.

    <!-- 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.Set the appropriate values for the PartnerId and CustomerId variables found in the Program.cs file.

    // 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.When you run this sample project, it obtains the refresh token for the specified partner. Em seguida, ele solicita um token de acesso para acessar o Partner Center e o Azure AD Graph em nome do parceiro.Then, it requests an access token to access Partner Center and Azure AD Graph on behalf of the partner. 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.The next task it performs is the deletion and creation of permission grants into the customer tenant. 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.Since there's no relationship between the control panel vendor and the customer, these permissions need to be added using the Partner Center API. O exemplo a seguir mostra como fazer isso.The following example shows how to accomplish that.

    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\": \"00000002-0000-0000-c000-000000000000\", \"scope\":\"Domain.ReadWrite.All,User.ReadWrite.All,Directory.Read.All\"}"), // for Azure AD 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 Azure AD 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 Azure AD Graph em nome do cliente.After these permissions have been established, the sample performs operations using Azure AD Graph on behalf of the customer.

Java (autenticação CPV)Java (CPV authentication)

  1. Desenvolva e implante um processo para que parceiros do Provedor de Soluções na Nuvem forneçam o consentimento apropriado.Develop and deploy a process for Cloud Solution Provider partners to provide the appropriate consent. Para obter mais informações e um exemplo, confira consentimento do parceiro.For more information and an example, see the partner consent.

    Importante

    As credenciais do usuário de um parceiro do Provedor de Soluções na Nuvem não devem ser armazenadas.User credentials from a Cloud Solution Provider partner should not be stored. 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.The refresh token obtained through the partner consent process should be stored and used to request access tokens for interacting with any Microsoft API.

  2. Clone o repositório Partner-Center-Java-Samples usando o comando a seguirClone the Partner-Center-Java-Samples repository using the following command

    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.Open the cpvsample project found in the Partner-Center-Java-Samples\secure-app-model\keyvault directory.

  4. Atualize as configurações do aplicativo encontradas no arquivo application.properties.Update the application settings found in the application.properties file.

    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.The value for the partnercenter.displayName should be the display name of your marketplace application.

  5. Defina os valores apropriados para as variáveis partnerId e customerId encontradas no arquivo Program.java.Set the appropriate values for the partnerId and customerId variables found in the Program.java file.

    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.When you run this sample project, it obtains the refresh token for the specified partner. Em seguida, ele solicita um token de acesso para acessar o Partner Center em nome do parceiro.Then, it requests an access token to access Partner Center on behalf of the partner. 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.The next task it performs is the deletion and creation of permission grants into the customer tenant. 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.Since there's no relationship between the control panel vendor and the customer, these permissions need to be added using the Partner Center API. O exemplo a seguir mostra como conceder as permissões.The following example shows how to grant the permissions.

    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.Uncomment the RunAzureTask and RunGraphTask function calls if you want to see how to interact with Azure Resource Manager and Microsoft Graph on behalf of the customer.