Ativando a estrutura de Modelo de Aplicativo Seguro
A Microsoft está introduzindo uma estrutura segura e escalável para autenticar parceiros de provedor de soluções em nuvem (CSP) e fornecedores de painel 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 da API do Partner Center. Isso ajuda todas as partes (incluindo Microsoft, parceiros CSP e CPVs) a proteger sua infraestrutura e os dados de clientes 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, é necessário que os parceiros gerenciem o ambiente dos clientes para os quais eles vendem e forneçam suporte. Os clientes que compram por esse canal precisam confiar bastante no parceiro do qual estão comprando, pois o negócio do parceiro tem acesso de administrador de alto privilégio ao locatário do cliente.
Escopo
Este artigo está relacionado a CSPs e CPVs.
CPVs
- Um CPV é um fornecedor independente de software que desenvolve aplicativos a serem usados por parceiros CSP para integração com as APIs do Partner Center.
- Um CPV não é um parceiro CSP com acesso direto ao Partner Center ou APIs.
CSPs
- Provedores indiretos do CSP e parceiros CSP diretos que estão usando ID do aplicativo + autenticação de usuário e se integram diretamente às APIs do Partner Center.
Requisitos de segurança
Para obter detalhes sobre os requisitos de segurança, confira Requisitos de Segurança do Parceiro.
Modelo de Aplicativo Seguro
Os aplicativos do Marketplace precisam representar os privilégios de parceiro CSP para poderem realizar chamadas às APIs da Microsoft. Ataques de segurança nesses aplicativos confidenciais podem levar ao comprometimento dos dados do cliente.
Para obter uma visão geral e detalhes da nova estrutura de autenticação, confira Estrutura de Modelo de Aplicativo Seguro, que aborda os princípios e as práticas recomendadas para tornar os aplicativos do marketplace sustentáveis e robustos com base em comprometimentos de segurança.
Exemplos
Os documentos de visão geral e o código de exemplo a seguir descrevem como os parceiros podem implementar a estrutura do Modelo de Aplicativo Seguro:
-
O SDK Java 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 é oficialmente suportado pela Microsoft. Caso se depare com um problema, você pode obter ajuda da comunidade ou abrir um problema no GitHub.
REST
Para fazer chamadas REST com o código de exemplo da estrutura do Modelo de Aplicativo Seguro, siga estas etapas:
- Ativando a estrutura de Modelo de Aplicativo Seguro
- Ativando a estrutura de Modelo de Aplicativo Seguro
Criar um aplicativo Web
Entre no portal do Azure.
Criar um aplicativo do Microsoft Entra.
Conceda permissões de aplicativo delegadas aos recursos a seguir, dependendo dos requisitos do seu aplicativo. Se necessário, você pode adicionar mais permissões delegadas para recursos do aplicativo.
Microsoft Partner Center (alguns locatários mostram SampleBECApp)
APIs de Gerenciamento do Azure (se você estiver planejando chamar APIs do Azure)
Microsoft Azure Active Directory
Verifique se a URL inicial do aplicativo está definida para um ponto de extremidade em que um aplicativo Web dinâmico está sendo executado. 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á executando em
https://localhost:44395/
.Observe as seguintes informações das configurações do seu aplicativo Web no Microsoft Entra ID:
- 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:
Faça logon 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 uma conta de agente de administração ou agente de vendas).
Substitua Application-Id pelo seu ID de aplicativo Microsoft Entra (GUID).
Quando solicitado, faça logon com sua conta de usuário com a MFA configurada.
Quando solicitado, insira mais informações de MFA (número de telefone ou endereço de e-mail) para verificar seu login.
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/
.
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ê precisa usar seu código de autorização para obter um token de atualização:
Faça uma chamada POST para o ponto de extremidade de logon do Microsoft Entra com o código de
https://login.microsoftonline.com/CSPTenantID/oauth2/token
autorização. Para obter um exemplo, confira a chamada de exemplo a seguir.Observe o token de atualização que é retornado.
Armazene o token de atualização no Azure Key Vault. Para obter mais informações, confira a documentação da API do Key Vault.
Importante
O token de atualização precisa estar 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 de 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ê precisa obter um token de acesso antes de poder fazer chamadas às 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 de 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 fazer chamadas às 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 é oficialmente suportado pela Microsoft. Caso se depare com um problema, você pode obter ajuda da comunidade ou abrir um problema no GitHub.
Você pode usar o módulo do Partner Center PowerShell para reduzir a infraestrutura necessária para trocar um código de autorização para um token de acesso. Esse método é opcional para fazer chamadas REST do Partner Center.
Para obter mais informações sobre esse processo, confira a documentação de Modelo de Aplicativo Seguro do PowerShell.
Instale os módulos Microsoft Entra ID e Partner Center PowerShell.
Install-Module AzureAD
Install-Module PartnerCenter
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 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ê receberá uma solicitação para 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ê receberá uma solicitação para 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 as permissões apropriadas.
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.