Compartilhar via


Criar um aplicativo de parceiro seguro

Você pode implementar a estrutura do Modelo de Aplicativo Seguro criando um aplicativo para CSPs (Provedores de Soluções na Nuvem) ou CPVs (Fornecedores do Painel de Controle).

Implementar modelo de aplicativo seguro

Etapas para habilitar o modelo de aplicativo seguro

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.

Criar uma entidade de serviço do Partner Center

Primeiro, crie uma entidade de serviço do Microsoft Partner Center no locatário do parceiro CSP, onde o aplicativo multilocatário será criado.

Para locatários parceiros CSP, essa entidade de serviço já deve existir. Caso contrário, crie usando as etapas a seguir.

Em uma janela do PowerShell do administrador, execute os seguintes comandos.

  1. Instalar o módulo do Azure AD. Install-Module Microsoft.Graph
  2. Execute o Connect-MgGraph, isso solicita um nome de usuário e senha. Insira as credenciais de administrador do locatário. Connect-MgGraph
  3. Crie uma entidade de serviço do Microsoft Partner Center. New-MgServicePrincipal -DisplayName "Microsoft Partner Center" -AppId fa3d9a0c-3fb0-42cc-9193-47c7ecd2edbd

Criar um aplicativo multilocatário no locatário do parceiro CSP

Use as etapas a seguir para verificar se as propriedades do aplicativo a seguir estão definidas para o aplicativo multilocatário recém-criado.

  1. Entre no portal.azure.com
  2. Selecione Microsoft Entra ID e Registros de aplicativo para criar novos registros com multilocatário.

Captura de tela mostrando Registrar um modal de aplicativo.

  1. Selecione um nome de exibição voltado para o usuário para seu aplicativo.
  2. Selecione Tipo de conta com suporte: Contas em qualquer diretório organizacional (Qualquer diretório do Microsoft Entra - Multilocatário).
  3. Selecione um tipo de plataforma "Web".
  4. A URL de redirecionamento deve ser a URL de redirecionamento do aplicativo, que mostrará a mensagem de sucesso de consentimento para o parceiro e coletará um token de atualização. Certifique-se de que o URL de redirecionamento do seu aplicativo esteja definido como um ponto de extremidade onde um aplicativo Web ativo está sendo executado. Este aplicativo precisa aceitar o código de autorização da chamada de entrada do Microsoft Entra.
  5. Vá para Gerenciar>certificados e segredos>+Novo segredo do cliente na guia Segredos do cliente.

Observação

Você precisará das seguintes informações das configurações do seu aplicativo Web no Microsoft Entra ID:

  • ID do aplicativo
  • Segredo do aplicativo

Captura de tela mostrando certificados e segredos.

Aplicar permissões

Verifique se as permissões a seguir estão definidas para o aplicativo multilocatário.

Na seção de permissão da API:

  • Não deve haver permissões de aplicativo diretas para o aplicativo multilocatário.

  • Siga o caminho abaixo para adicionar permissões delegadas para o Microsoft Graph:

    • Permissões>de API Adicionar uma permissão>APIs da Microsoft>Permissões delegadas do Microsoft Graph>
      • DelegatedAdminRelationship.ReadWrite.All User.Read.All

    Captura de tela mostrando permissões de API de solicitação de aplicativo parceiro.

    • Siga o caminho abaixo para adicionar permissões delegadas para o Microsoft Partner Center - Conceder permissões ao Access Partner Center em Permissões delegadas:
      • Permissões>de API Adicionar uma permissão>APIs que minha organização usa>Permissões delegadas do Microsoft Partner Center>Representação>de usuário

    Captura de tela mostrando as permissões do aplicativo parceiro A P I.

Apresente ao parceiro o link de consentimento e peça-lhe que entre com sua conta de serviço para aprovar o aplicativo para agir em nome da conta de serviço no locatário parceiro.

O usuário parceiro CSP deve ser um Administrador Global e um Agente de Administração para consentir o aplicativo multilocatário.

Aplicativo multilocatário

O multilocatário ApplicationID precisa ser substituído pela ID do aplicativo.

Navegue até Registros de aplicativo e selecione a ID do aplicativo (cliente) e substitua abaixo.

Captura de tela mostrando o cliente Partner Microsoft Entra.

Obter código de autorização

Você deve obter um código de autorização para seu aplicativo Web na chamada de entrada do Microsoft Entra:

  1. Entre no Microsoft Entra ID.
  2. Substitua Application-Id pelo seu ID de aplicativo Microsoft Entra (GUID).
  3. Quando solicitado, entre com sua conta de usuário com MFA configurada.
  4. Quando solicitado, insira outras informações de MFA (número de telefone ou endereço de email) para verificar sua entrada.
  5. Depois que você estiver conectado, o navegador redirecionará a chamada para o ponto de extremidade do aplicativo Web com seu código de autorização. Por exemplo, o código de exemplo a seguir redireciona para https://localhost:44395/.
GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code&redirect_url=https://<CSPApplicationUrl_which_collects_refreshtoken>

or

GET https://login.microsoftonline.com/common/oauth2/authorize?&client_id=<CSPApplicationId>&response_type=code

Para a China, use o seguinte link:

GET https://login.chinacloudapi.cn/common/oauth2/authorize ?&client_id= <CSPApplicationId>&response_type=code&redirect_url= https://<CSPApplicationUrl_which_collects_refreshtoken>

or

GET https://login.chinacloudapi.cn/common/oauth2/authorize?&client_id= <CSPApplicationId>&response_type=code

Rastreamento de chamada de código de autorização: https://localhost:44395/?code=<authorization_code>&<rest of properties for state>

Obter token de atualização

Em seguida, você precisa usar seu código de autorização para obter um token de atualização:

  1. Faça uma chamada POST para o ponto de extremidade https://login.microsoftonline.com/CSPTenantID/oauth2/token de entrada do Microsoft Entra com o código de autorização. Para obter um exemplo, confira a chamada de exemplo a seguir.
  2. Observe o token de atualização que é retornado.
  3. Armazene o token de atualização no Cofre de Chaves do Azure. Para obter mais informações, confira a documentação da API do Key Vault.

Observação

Os recursos mencionados na chamada POST de exemplo abaixo são para APIs GDAP-Graph.

Os recursos para outras APIs de PC são os seguintes:

APIs do Partner Center (https://api.partnercenter.microsoft.com)

GDAP APIs

API de parceiro (https://api.partner.microsoft.com)

Chamada de exemplo

POST  'https://login.microsoftonline.com/<partnerTenantId>/oauth2/token' \
--header 'content-type: application/x-www-form-urlencoded' \
--form 'grant_type="authorization_code"' \
--form 'client_id=<application_id or client_id>' \
--form 'resource="https://graph.microsoft.com"' \
--form 'code="<authorization_code>"'   
Response Body:

{
    "token_type": "Bearer",
    "scope": "DelegatedAdminRelationship.ReadWrite.All User.Read.All",
    "expires_in": "4549",
    "ext_expires_in": "4549",
    "expires_on": "1652886571",
    "not_before": "1652881721",
    "resource": "https://graph.microsoft.com",
    "access_token": "Access_token",
    "refresh_token": "Refresh_token",    
    "id_token": "Id_token"
}

Configurar o cofre de chaves

Primeiro, crie um novo aplicativo Web no locatário do parceiro CSP. Se o aplicativo CPV for usado para chamar as APIs do Partner Center, o CPV deverá criar um novo aplicativo Web no locatário do parceiro CPV.

Se você estiver usando o Cofre de Chaves do Azure:

  1. Crie o Cofre de Chaves do Azure com o apropriado <key-vault-name> e ele resulta em um nome DNS como: https://<key-vault-name>.vault.azure.net
  2. Adicione um token de atualização ao cofre de chaves.

Fornecer acesso ao cofre de chaves

Nas políticas de acesso do cofre de chaves, adicione o KeyVaultAccessApp com permissões para gerenciar apenas os aspectos Obter e Definir de um Segredo.

Captura de tela mostrando as permissões necessárias do aplicativo parceiro CSP.

Configurar o protótipo

O protótipo tem duas aplicações:

  • Consentimento do parceiro: representa um aplicativo Web projetado para aceitar o consentimento de um parceiro CSP e mostrar uma mensagem de sucesso.
    • Este aplicativo configura o consentimento e captura o token de atualização do usuário autorizado.
    • O token de atualização do usuário consentido é usado para gerar o token de acesso para o locatário parceiro CSP.
  • Aplicativo CSP ou aplicativo CPV: representa um aplicativo principal, que chama APIs e gráficos do Partner Center.
    • APIs para executar ações de comércio e usuário em nome do parceiro.

Este aplicativo recupera o token de acesso para um público específico (APIs ou Gráfico do Partner Center) antes de chamar as respectivas APIs. Ele usa o token de atualização que é armazenado com segurança no cofre de chaves.

Configuração da Web CSP

Para o aplicativo parceiro CSP, o web.config arquivo tem as seções a seguir destacadas. Atualize esses valores com IDs e segredos de aplicativo correspondentes. Para seu aplicativo principal, use "certificado" como o segredo do aplicativo Web em vez de segredos simples, pois ele fornece uma camada extra de segurança.

<!-- AppID that represents CSP application -->
<add key="ida:CSPApplicationId" value="CSPApplicationIdValue" />
<!--
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="CSPApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens --> <add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
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="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />

Configuração do aplicativo CSP

Para o aplicativo parceiro CSP, o app.config arquivo tem as seções a seguir destacadas. Atualize os valores com os IDs e segredos de aplicativo correspondentes. Para seu aplicativo principal, use "certificado" como o segredo do aplicativo Web em vez de segredos simples, pois ele fornece uma camada extra de segurança.

<!-- AppID that represents CSP application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
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="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
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="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de,
China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />

Os CSPs que usam o aplicativo CPV podem chamar a API ApplicationConsent para criar a entidade de serviço no locatário do cliente para acessar o Microsoft Graph para gerenciar os locatários do cliente. Para obter mais informações, consulte Autenticação do Partner Center.

Configuração da Web CPV

Para o aplicativo parceiro CSP, o web.config arquivo tem as seções a seguir destacadas. Atualize esses valores com IDs e segredos de aplicativo correspondentes. Para seu aplicativo principal, use "certificado" como o segredo do aplicativo Web em vez de segredos simples, pois ele fornece uma camada extra de segurança.

<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
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="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
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="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />

Configuração do aplicativo CPV

Para o aplicativo de parceiro CPV, o app.config arquivo tem as seguintes seções destacadas. Atualize os valores com os IDs e segredos de aplicativo correspondentes. Para seu aplicativo principal, use "certificado" como o segredo do aplicativo Web em vez de segredos simples, pois ele fornece uma camada extra de segurança.

<!-- AppID that represents Control panel vendor application -->
<add key="ida:CPVApplicationId" value="CPVApplicationIdValue" />
<!--
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="CPVApplicationSecretValue" />
<!-- AppID that is given access for keyvault to store the refresh tokens -->
<add key="ida:KeyVaultClientId" value="KeyVaultClientIdValue" />
<!--
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="KeyVaultClientSecretValue" />
<!-- AAD instance: Global is .com, for different national clouds it changes German cloud: .de, China cloud: login.chinacloudapi.cn -->
<add key="ida:AADInstance" value="https://login.microsoftonline.com/" />