Enabling the Secure Application Model framework (Ativar a arquitetura do Modelo de Aplicação Segura)

A Microsoft está introduzindo uma estrutura segura e escalável para autenticar parceiros de provedor de soluções em nuvem (CSP) e fornecedores de painéis de controle (CPV) por meio da arquitetura Microsoft Entra multifactor authentication (MFA).

Você pode usar o novo modelo para elevar a segurança para chamadas de integração de API do Partner Center. Isso ajuda todas as partes (incluindo Microsoft, parceiros CSP e CPVs) a proteger sua infraestrutura e os dados do cliente contra riscos de segurança.

O programa CSP permite que os clientes comprem produtos e serviços da Microsoft por meio dos parceiros. De acordo com o contrato com a Microsoft, os parceiros são obrigados a gerenciar o ambiente para os clientes aos quais vendem e fornecer suporte. Os clientes que compram por meio desse canal devem depositar uma alta quantidade de confiança no parceiro do qual estão comprando, porque a empresa parceira tem acesso de administrador de alto privilégio ao locatário do cliente.

Âmbito

Este artigo refere-se tanto aos PSC como aos CPV.

CPVs

  • Um CPV é um fornecedor de software independente que desenvolve aplicações a serem utilizadas por parceiros CSP para integração com as APIs do Centro de Parceiros.
  • Um CPV não é um parceiro CSP com acesso direto ao Partner Center ou APIs.

DEPs

  • Provedores indiretos de CSP e parceiros diretos de CSP que estão usando ID de aplicativo + autenticação de usuário e se integram diretamente com APIs do Partner Center.

Requisitos de segurança

Para obter detalhes sobre os requisitos de segurança, consulte Requisitos de segurança do parceiro.

Modelo de Aplicação Segura

Os aplicativos do Marketplace precisam representar privilégios de parceiro CSP para chamar APIs da Microsoft. Ataques de segurança a esses aplicativos confidenciais podem levar ao comprometimento dos dados do cliente.

Para obter uma visão geral e detalhes da nova estrutura de autenticação, consulte a estrutura do Modelo de Aplicativo Seguro, que aborda princípios e práticas recomendadas para tornar os aplicativos de mercado sustentáveis e robustos contra comprometimentos de segurança.

Exemplos

Os seguintes documentos de visão geral e código de exemplo descrevem como os parceiros podem implementar a estrutura do Modelo de Aplicativo Seguro:

REST

Para fazer chamadas REST com a estrutura Secure Application Model com código de exemplo, siga estas etapas:

  1. Criar um aplicativo Web

Criar uma aplicação Web

  1. Inicie sessão no portal do Azure.

  2. Crie um aplicativo Microsoft Entra.

  3. Conceda permissões de aplicativo delegado aos seguintes recursos, dependendo dos requisitos do seu aplicativo. Se necessário, você pode adicionar mais permissões delegadas para recursos do aplicativo.

    1. Microsoft Partner Center (alguns locatários mostram SampleBECApp)

    2. APIs de Gerenciamento do Azure (se você estiver planejando chamar APIs do Azure)

    3. Windows Azure Active Directory

  4. Certifique-se de que o URL inicial da sua aplicação está definido para um ponto de extremidade onde uma aplicação Web ativa está a ser executada. Este aplicativo precisa aceitar o código de autorização da chamada de login do Microsoft Entra. Por exemplo, no código de exemplo na seção a seguir, o aplicativo Web está sendo executado em https://localhost:44395/.

  5. Observe as seguintes informações das configurações do seu aplicativo Web no Microsoft Entra ID:

    • ID da aplicação
    • Segredo do aplicativo

Nota

Recomenda-se usar um certificado como segredo do aplicativo. No entanto, você também pode criar uma chave de aplicativo no portal do Azure. O código de exemplo na seção a seguir usa uma chave de aplicativo.

Obter código de autorização

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

  1. Inicie sessão no Microsoft Entra ID.

    Certifique-se de fazer login com a conta de usuário a partir da qual você faz chamadas de API do Partner Center (como um agente administrativo ou uma conta de agente de vendas).

  2. Substitua Application-Id pelo seu ID de aplicativo (GUID) do Microsoft Entra.

  3. Quando solicitado, faça login com sua conta de usuário com MFA configurado.

  4. Quando solicitado, insira mais informações de MFA (número de telefone ou endereço de e-mail) para verificar seu login.

  5. Depois de iniciar sessão, o navegador redirecionará a chamada para o ponto de extremidade da aplicação Web com o seu código de autorização. Por exemplo, o código de exemplo a seguir redireciona para https://localhost:44395/.

Rastreamento de chamada de código de autorização

POST https://localhost:44395/ HTTP/1.1
Origin: https://login.microsoftonline.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referrer: https://login.microsoftonline.com/kmsi
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: OpenIdConnect.nonce.hOMjjrivcxzuI4YqAw4uYC%2F%2BILFk4%2FCx3kHTHP3lBvA%3D=dHVyRXdlbk9WVUZFdlFONVdiY01nNEpUc0JRR0RiYWFLTHhQYlRGNl9VeXJqNjdLTGV3cFpIWFg1YmpnWVdQUURtN0dvMkdHS2kzTm02NGdQS09veVNEbTZJMDk1TVVNYkczYmstQmlKUzFQaTBFMEdhNVJGVHlES2d3WGlCSlVlN1c2UE9sd2kzckNrVGN2RFNULWdHY2JET3RDQUxSaXRfLXZQdG00RnlUM0E1TUo1YWNKOWxvQXRwSkhRYklQbmZUV3d3eHVfNEpMUUthMFlQUFgzS01RS2NvMXYtbnV4UVJOYkl4TTN0cw%3D%3D

code=AuthorizationCodeValue&id_token=IdTokenValue&<rest of properties for state>

Obter token de atualização

Em seguida, você deve 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 login do Microsoft Entra com o código de autorização. Para obter um exemplo, consulte a seguinte chamada de exemplo.

  2. Observe o token de atualização retornado.

  3. Armazene o token de atualização no Cofre da Chave do Azure. Para obter mais informações, consulte a documentação da API do Key Vault.

Importante

O token de atualização deve ser armazenado como um segredo no Key Vault.

Exemplo de chamada de atualização

Solicitação de espaço reservado:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 966
Expect: 100-continue

Corpo do pedido:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id&client_secret=Application-Secret&grant_type=authorization_code&code=AuthorizationCodeValue

Resposta do espaço reservado:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

Corpo da resposta:

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3599","ext_expires_in":"3599","expires_on":"1547579127","not_before":"1547575227","resource":"https://api.partnercenter.microsoft.com","access_token":"Access

Obter token de acesso

Você deve obter um token de acesso antes de poder fazer chamadas para as APIs do Partner Center. Você deve usar um token de atualização para obter um token de acesso porque os tokens de acesso geralmente têm um tempo de vida limitado (por exemplo, menos de uma hora).

Solicitação de espaço reservado:

POST https://login.microsoftonline.com/CSPTenantID/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: login.microsoftonline.com
Content-Length: 1212
Expect: 100-continue

Corpo do pedido:

resource=https%3a%2f%2fapi.partnercenter.microsoft.com&client_id=Application-Id &client_secret= Application-Secret&grant_type=refresh_token&refresh_token=RefreshTokenVlaue&scope=openid

Resposta do espaço reservado:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Content-Type: application/json; charset=utf-8

Corpo da resposta:

{"token_type":"Bearer","scope":"user_impersonation","expires_in":"3600","ext_expires_in":"3600","expires_on":"1547581389","not_before":"1547577489","resource":"https://api.partnercenter.microsoft.com","access_token":"AccessTokenValue","id_token":"IDTokenValue"}

Fazer chamadas à API do Partner Center

Você deve usar seu token de acesso para chamar as APIs do Partner Center. Veja o exemplo de chamada a seguir.

Exemplo de chamada à API do Partner Center

GET https://api.partnercenter.microsoft.com/v1/customers/CustomerTenantId/users HTTP/1.1
Authorization: Bearer AccessTokenValue
Accept: application/json
X-Locale: en-US
Host: api.partnercenter.microsoft.com

PowerShell

O módulo PowerShell 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.

Você pode usar o módulo PowerShell do Partner Center para reduzir a infraestrutura necessária para trocar um código de autorização por um token de acesso. Esse método é opcional para fazer chamadas REST do Partner Center.

Para obter mais informações sobre esse processo, consulte a documentação do Secure App Model PowerShell.

  1. Instale os módulos Microsoft Entra ID e Partner Center PowerShell.

    Install-Module AzureAD
    
    Install-Module PartnerCenter
    
  2. Use o comando New-PartnerAccessToken para executar o processo de consentimento e capturar o token de atualização necessário.

    $credential = Get-Credential
    
    $token = New-PartnerAccessToken -ApplicationId 'xxxx-xxxx-xxxx-xxxx' -Scopes 'https://api.partnercenter.microsoft.com/user_impersonation' -ServicePrincipal -Credential $credential -Tenant 'yyyy-yyyy-yyyy-yyyy' -UseAuthorizationCode
    

    Nota

    O parâmetro ServicePrincipal é usado com o comando New-PartnerAccessToken porque um aplicativo Microsoft Entra com um tipo de Web/API está sendo usado. Esse tipo de aplicativo requer que um identificador de cliente e um segredo sejam incluídos na solicitação de token de acesso. Quando o comando Get-Credential for invocado, você será solicitado a inserir um nome de usuário e senha. Insira o identificador do aplicativo como o nome de usuário. Digite o segredo do aplicativo como a senha. Quando o comando New-PartnerAccessToken for invocado, você será solicitado a inserir credenciais novamente. Insira as credenciais da conta de serviço que você está usando. Esta conta de serviço deve ser uma conta de parceiro com as permissões apropriadas.

  3. Copie o valor do token de atualização.

    $token.RefreshToken | clip
    

Você deve armazenar o valor do token de atualização em um repositório seguro, como o Azure Key Vault. Para obter mais informações sobre como usar o módulo de aplicativo seguro com o PowerShell, consulte o artigo sobre autenticação multifator.