Compartilhar via


Habilitando a estrutura modelo de aplicativo seguro

A Microsoft está introduzindo uma estrutura segura e escalonável para autenticar parceiros do CSP (provedor de soluções na nuvem) e fornecedores de painel de controle (CPV) por meio da arquitetura de MFA (autenticação multifator) do Microsoft Entra.

Você pode usar o novo modelo para elevar a segurança para chamadas de integração da API do Partner Center. Isso ajuda todas as partes (incluindo Microsoft, parceiros CSP e CPVs) a proteger a 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 eles vendem e fornecem suporte. Os clientes que compram por meio desse canal devem confiar muito no parceiro do qual estão comprando porque o negócio de parceiros tem acesso de administrador de alto privilégio ao locatário do cliente.

Scope

Este artigo refere-se a CSPs e CPVs.

CPVs

  • Um CPV é um fornecedor de software independente que desenvolve aplicativos para uso por parceiros do CSP para integrar-se às APIs do Partner Center.
  • Um CPV não é um parceiro CSP com acesso direto ao Partner Center ou APIs.

CSPs

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

Requisitos de segurança

Para obter detalhes sobre os requisitos de segurança, consulte Os Requisitos de Segurança do Parceiro.

Modelo de aplicativo seguro

Os aplicativos do Microsoft 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 modelo de aplicativo seguro, que aborda princípios e práticas recomendadas para tornar os aplicativos do Marketplace sustentáveis e robustos com relação aos compromissos de segurança.

Samples

Os documentos de visão geral a seguir e o código de exemplo descrevem como os parceiros podem implementar a estrutura modelo de aplicativo seguro:

REST

Para fazer chamadas REST com a estrutura modelo de aplicativo seguro com código de exemplo, siga estas etapas:

  1. Criar um aplicativo Web

Criar um aplicativo Web

  1. Entre no portal do Azure.

  2. Crie um aplicativo do Microsoft Entra.

  3. Conceda permissões de aplicativo delegado aos recursos a seguir, dependendo dos requisitos do aplicativo. Se necessário, você pode adicionar mais permissões delegadas para recursos de 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. Verifique se a URL inicial do aplicativo está definida como um ponto de extremidade em que um aplicativo Web dinâmico está em execução. Esse aplicativo precisa aceitar o código de autorização da chamada de logon do Microsoft Entra. Por exemplo, no código de exemplo na seção a seguir, o aplicativo Web está em execução em https://localhost:44395/.

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

    • ID do aplicativo
    • Segredo do aplicativo

Observação

É recomendável usar um certificado como o 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 seu aplicativo Web aceitar da chamada de logon do Microsoft Entra:

  1. Entre na ID do Microsoft Entra.

    Faça logon com a conta de usuário da qual você faz chamadas à API do Partner Center (como um agente administrador ou uma conta do agente de vendas).

  2. Substitua a ID do Aplicativo pela GUID (ID do aplicativo Microsoft Entra).

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

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

  5. Depois que você estiver conectado, o navegador redirecionará a chamada para o ponto de extremidade do aplicativo Web com o 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 o código de autorização para obter um token de atualização:

  1. Faça uma chamada POST para o ponto https://login.microsoftonline.com/CSPTenantID/oauth2/token de extremidade de logon do Microsoft Entra com o código de autorização. Para obter um exemplo, consulte a chamada de exemplo a seguir.

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

  3. Armazene o token de atualização no Azure Key Vault. 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.

Chamada de atualização de exemplo

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 da solicitação:

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":"3600","ext_expires_in":"3600","expires_on":"1547581389","not_before":"1547577489","resource":"https://api.partnercenter.microsoft.com","access_token":"AccessTokenValue","id_token":"IDTokenValue"}

Obter token de acesso

Você deve obter um token de acesso antes de 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 da solicitação:

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 o token de acesso para chamar as APIs do Partner Center. Consulte a chamada de exemplo 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

A validação de chamadas à API é integrada à MFA

Para garantir que você esteja fazendo chamadas de API válidas com MFA, você pode fornecer um ValidateMfa no cabeçalho da solicitação. Ao fazer isso, procure o isMfaCompliant na resposta:

Solicitação de Exemplo

GET https://api.partnercenter.microsoft.com/v1/customers/CustomerTenantId/users HTTP/1.1
... 
ValidateMfa: true   <-- Required header for MFA validation
... 

Cabeçalhos de resposta de exemplo

... 
isMfaCompliant: true <-- Key header indicating MFA compliance
... 

PowerShell

O módulo powershell do Partner Center pode ser usado para gerenciar recursos do Partner Center. É um projeto de software livre mantido pela comunidade de parceiros e não tem suporte oficial da 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 PowerShell do Modelo de Aplicativo Seguro .

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

    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
    

    Observação

    O parâmetro ServicePrincipal é usado com o comando New-PartnerAccessToken porque um aplicativo Do 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 uma senha. Insira o identificador do aplicativo como o nome de usuário. Insira o segredo do aplicativo como a senha. Quando o comando New-PartnerAccessToken for invocado, você será solicitado a inserir as credenciais novamente. Insira as credenciais para a conta de serviço que você está usando. Essa conta de serviço deve ser uma conta de parceiro com 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 de autenticação multifator .