Criar uma aplicação de parceiro segura

Pode implementar o quadro do Modelo de Aplicação Segura criando uma aplicação para fornecedores de soluções em nuvem (CSPs) ou Painel de Controlo Fornecedores (CPVs).

Implementar aplicações seguras modelo

Medidas para permitir aplicações seguras modelo

Criar um diretor de serviço do Partner Center

Em primeiro lugar, crie um diretor de serviço do Microsoft Partner Center no inquilino do parceiro CSP, onde a aplicação multi-inquilino vai ser criada.

Para os inquilinos parceiros da CSP, este diretor de serviço já deveria existir. Caso contrário, crie utilizando os seguintes passos.

Numa janela PowerShell do administrador, executar os seguintes comandos.

  1. Instale o módulo AzureAD. Install-Module "AzureAD"
  2. Executar Ligação-AzureAD, isto irá solicitar um nome de utilizador e senha. Insira as credenciais de administrador do inquilino. Connect-AzureAD
  3. Crie um diretor de serviço do Microsoft Partner Center. New-AzureADServicePrincipal -DisplayName "Microsoft Partner Center" -AppId fa3d9a0c-3fb0-42cc-9193-47c7ecd2edbd

Criar uma aplicação multi-inquilino no inquilino do sócio da CSP

Utilize as seguintes etapas para garantir que as seguintes propriedades de aplicação estão definidas para a aplicação multi-arrendatário recém-criada.

  1. Inscreva-se em portal.azure.com
  2. Selecione Azure Ative Directory e Registos de aplicações para criar novas inscrições com multi-inquilino.

Screenshot showing Register an app modal.

  1. Selecione um nome de exibição virado para o utilizador para a sua aplicação.
  2. Selecione Tipo de conta suportada: Contas em qualquer diretório organizacional (Qualquer diretório Azure AD - Multitenant).
  3. Selecione um tipo de plataforma "Web".
  4. O URL de redirecionamento deve ser o URL de redirecionamento de aplicação, que mostrará a mensagem de sucesso do consentimento ao parceiro e recolherá um token de atualização. Certifique-se de que o URL de redirecionamento da sua aplicação está definido para um ponto final onde uma aplicação web ao vivo está em execução. Esta aplicação terá de aceitar o código de autorização a partir da chamada de Azure AD de inscrição.
  5. Vá a Gerir>Segredos de Certificados&+Novo segredo de cliente no separador segredos do Cliente.>

Nota

Note as seguintes informações a partir das definições da sua aplicação web em Azure AD:

  • ID da aplicação
  • Segredo da aplicação

Screenshot showing Certificates and secrets.

Aplicar permissões

Certifique-se de que estão definidas as seguintes permissões para a aplicação de vários inquilinos.

Na secção de autorização da API :

  • Não deve haver permissões diretas de aplicação para a aplicação de vários inquilinos.
  • Siga o caminho abaixo para adicionar permissões delegadas para a Microsoft Graph
    • Permissões> da API Adicionar uma permissão>APIs da> Microsoft Microsoft Graph>Permissões deslegítimas
      • DelegatedAdminRelationship.ReadWrite.All User.Read.All

Screenshot showing partner app request API permissions.

  • Siga o caminho abaixo para adicionar permissões delegadas para o Microsoft Partner Center - Grant Access Partner Center permissãos sob permissões delegadas
    • Permissões> da API Adicionar uma permissão>APIs a minha organização usa>Microsoft Partner Center>Permissões> Delegadas Personificação do utilizador

Screenshot showing partner app A P I permissions.

Apresente o parceiro com o link de consentimento e que assinem com a sua conta de serviço para aprovar o pedido de atuação em nome da conta de serviço no arrendatário sócio.

O utilizador parceiro da CSP deve ser um Administração Global e um agente Administração para consentir a aplicação multi-arrendatário.

Aplicação de vários inquilinos

O multi-inquilino ApplicationID precisa de ser substituído pela sua Identificação de Aplicação.

Navegue para registos de aplicações e selecione o ID da Aplicação (Cliente) e substitua abaixo.

Screenshot showing Partner Azure A D client.

Obter código de autorização

Tem de obter um código de autorização para a sua aplicação web a partir da Azure AD chamada de sins de sôm.

  1. Inscreva-se na Azure AD.
  2. Substitua o ID da aplicação por Azure AD (GUID).
  3. Quando solicitado, inscreva-se na sua conta de utilizador com MFA configurado.
  4. Quando solicitado, insira outras informações do MFA (número de telefone ou endereço de e-mail) para verificar a sua inscrição.
  5. Depois de iniciar sessão, o navegador irá redirecionar a chamada para o ponto final da sua aplicação web com o seu código de autorização. Por exemplo, o seguinte código de amostra 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>

ou

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

Para a China, utilize o seguinte link:

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

ou

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

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

Receba o token refrescante

Em seguida, deve utilizar o seu código de autorização para obter um token de atualização:

  1. Faça uma chamada POST para o Azure AD ponto https://login.microsoftonline.com/CSPTenantID/oauth2/token final de inscrição com o código de autorização. Por exemplo, consulte a seguinte chamada de amostra.
  2. Reparem no token de atualização que é devolvido.
  3. Guarde o token refresh no Azure Key Vault. Para mais informações, consulte a documentação Key Vault API.

Nota

Os recursos mencionados na chamada post abaixo são para GDAP-Graph APIs.

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

APIs do Centro de Parceiros

GDAP APIs

Parceiro API

Chamada de amostra

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 da chave

Primeiro, crie uma nova aplicação web no inquilino do sócio da CSP. Se a aplicação CPV for utilizada para chamar a API do Centro Parceiro, o CPV deve criar uma nova aplicação web no inquilino do parceiro CPV.

Se estiver a usar o Azure Key Vault:

  1. Crie o Azure Key Vault com o apropriado <key-vault-name> e resultará num nome DNS como:https://<key-vault-name>.vault.azure.net
  2. Adicione um token refrescante ao cofre da chave.

Fornecer acesso ao cofre de chaves

Nas políticas de acesso do cofre-chave, adicione o KeyVaultAccessApp com permissões para gerir apenas os aspetos Get e set de um Segredo.

Screenshot showing CSP partner app required permissions.

Configurar o protótipo

O protótipo tem duas aplicações:

  • Consentimento do Parceiro: Representa uma aplicação web concebida para aceitar o consentimento de um parceiro CSP e mostrar uma mensagem de sucesso.
    • Esta aplicação configurará o consentimento e capturará o token de atualização do utilizador consentido.
    • O token de atualização do utilizador consentido é usado para gerar o token de acesso para o inquilino parceiro CSP.
  • Aplicação CSP ou aplicação CPV: Representa uma aplicação primária, que chama APIs do Centro Parceiro e gráfico.
    • APIs para realizar comércio e ações de utilizador em nome do parceiro.

Esta aplicação recupera o token de acesso para um público específico (Partner Center APIs ou Graph) antes de chamar as APIs respetivas. Usa o token refresh que é armazenado de forma segura no cofre da chave.

Configuração web CSP

Para o pedido de parceiro CSP, o web.config ficheiro tem as seguintes secções chamadas. Atualize estes valores com os correspondentes IDs e segredos de aplicação. Para a sua aplicação principal, use o "certificado" como segredo da aplicação web em vez de segredos simples, pois fornecerá 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 da aplicação CSP

Para o pedido de parceiro CSP, o app.config ficheiro tem as seguintes secções chamadas. Atualizar os valores com os iDs e segredos de aplicação correspondentes. Para a sua aplicação principal, use o "certificado" como segredo da aplicação web em vez de segredos simples, pois fornecerá 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 utilizam a aplicação CPV podem ligar para a AppConsent API para criar o principal serviço no inquilino do cliente para aceder ao Microsoft Graph para gerir os inquilinos do cliente. Para mais informações, consulte a autenticação do Partner Center.

Configuração web CPV

Para o pedido de parceiro CSP, o web.config ficheiro tem as seguintes secções chamadas. Atualize estes valores com os correspondentes IDs e segredos de aplicação. Para a sua aplicação principal, use o "certificado" como segredo da aplicação web em vez de segredos simples, pois fornecerá 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 de aplicação de CPV

Para a aplicação do parceiro CPV, o app.config ficheiro tem as seguintes secções chamadas. Atualizar os valores com os iDs e segredos de aplicação correspondentes. Para a sua aplicação principal, use o "certificado" como segredo da aplicação web em vez de segredos simples, pois fornecerá 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/" />