Partilhar via


Adicionar autenticação do Microsoft Entra para chamar APIs personalizadas dos Aplicativos Lógicos do Azure

Para melhorar a segurança das chamadas para as suas APIs, pode configurar a autenticação do Microsoft Entra através do portal do Azure para não ter de atualizar o seu código. Pode, também, pedir e impor a autenticação através do código da API.

Você pode adicionar autenticação das seguintes maneiras:

Autentique chamadas para sua API sem alterar o código

Aqui estão as etapas gerais para este método:

  1. Crie duas identidades de aplicativo Microsoft Entra (registro de aplicativo): uma para seu recurso de aplicativo lógico e outra para seu aplicativo Web (ou aplicativo de API).

  2. Para autenticar chamadas para sua API, use as credenciais (ID do cliente e segredo) para a entidade de serviço associada à identidade do aplicativo Microsoft Entra para seu aplicativo lógico.

  3. Inclua as IDs do aplicativo na definição de fluxo de trabalho do seu aplicativo lógico.

Parte 1: Criar uma identidade de aplicação Microsoft Entra para a sua aplicação lógica

Seu recurso de aplicativo lógico usa essa identidade de aplicativo do Microsoft Entra para autenticar na ID do Microsoft Entra. Só tem de configurar esta identidade uma vez para o seu inquilino. Por exemplo, você pode optar por usar a mesma identidade para todos os seus aplicativos lógicos, mesmo que possa criar identidades exclusivas para cada aplicativo lógico. Você pode configurar essas identidades no portal do Azure ou usar o PowerShell.

  1. Na caixa de pesquisa do portal do Azure , localize e selecione Microsoft Entra ID.

  2. Confirma que estás no mesmo tenant que a tua aplicação web ou aplicação de API.

    Gorjeta

    Para mudar de inquilino, na barra de título do Azure, abra o seu perfil e selecione Mudar de diretório.

  3. No menu de recursos do locatário, em Gerenciar, selecione Registros de aplicativos.

    A página Registos de aplicações mostra todos os registos de aplicações no seu inquilino. Para ver apenas os registos da sua aplicação, selecione Aplicações próprias.

  4. Na barra de ferramentas, selecione Novo registo.

    A captura de tela mostra o portal do Azure com o locatário do Microsoft Entra, o painel Registros de aplicativo e o comando selecionado para Novo registro.

  5. Na página Registrar um aplicativo , siga estas etapas:

    1. Em Name, forneça um nome amigável e voltado para o usuário para a identidade do aplicativo lógico.

    2. Em Tipos de conta suportados, selecione a opção que melhor descreve os tipos de conta que podem usar a identidade do aplicativo ou obter acesso à sua API.

    3. Em Redirecionar URI, selecione Web como a plataforma. Ao lado dessa opção, forneça uma URL exclusiva para o local retornar a resposta de autenticação.

      A captura de tela mostra o painel para registrar um aplicativo com nome de identidade do aplicativo e URL para onde enviar a resposta de autenticação.

    4. Quando terminar, selecione Registrar.

    A guia Aplicativos próprios agora mostra a identidade do aplicativo criado. Se essa identidade não aparecer, na barra de ferramentas, selecione Atualizar.

    A captura de ecrã mostra a identidade da sua aplicação lógica.

  6. Na lista de registros de aplicativos, selecione sua nova identidade de aplicativo.

  7. No menu de navegação de identidade do aplicativo, selecione Visão geral.

  8. Na página Visão geral , em Essentials, copie e salve a ID do aplicativo (cliente) para usar como a ID do cliente para seu aplicativo lógico na Parte 3.

    A captura de tela mostra o ID do aplicativo (cliente) realçado.

  9. No menu de identidade do aplicativo, em Gerenciar, selecione Certificados & segredos.

  10. Na página Segredos do cliente , selecione Novo segredo do cliente.

  11. No painel Adicionar um segredo do cliente , para Descrição, forneça um nome para o seu segredo. Em Expira, selecione uma duração para o seu segredo. Quando terminar, selecione Adicionar.

    O segredo que você cria atua como o "segredo" ou senha da identidade da aplicação para a sua aplicação lógica.

    A captura de tela mostra a criação de segredo para a identidade do aplicativo.

    Na página Certificados & segredos , na guia Segredos do cliente , seu segredo agora aparece junto com um valor secreto e uma ID secreta.

    A captura de tela mostra o valor secreto e a ID secreta com o botão copiar para o valor secreto selecionado.

  12. Copie o valor secreto para uso posterior. Ao configurar seu aplicativo lógico na Parte 3, você especifica esse valor como "segredo" ou senha.

Parte 2: Criar uma identidade de aplicativo Microsoft Entra para seu aplicativo Web ou aplicativo de API

Se seu aplicativo Web ou aplicativo de API já estiver implantado, você poderá ativar a autenticação e criar a identidade do aplicativo no portal do Azure. Caso contrário, você pode ativar a autenticação ao implantar com um modelo do Azure Resource Manager.

Criar a identidade do aplicativo para um aplicativo Web implantado ou aplicativo de API no portal do Azure

  1. No portal do Azure, localize e selecione seu aplicativo Web ou aplicativo de API.

  2. Em Configurações, selecione >Adicionar provedor de identidade.

  3. Depois de o painel Adicionar um provedor de identidade ser aberto, na guia Noções básicas, na lista Provedor de identidade, selecione Microsoft para usar as identidades do Microsoft Entra e, em seguida, selecione Adicionar.

  4. Agora, crie uma identidade de aplicativo para seu aplicativo Web ou aplicativo de API da seguinte maneira:

    1. Em Tipo de registro de aplicativo, selecione Criar novo registro de aplicativo.

    2. Em Name, forneça um nome para a identidade do aplicativo.

    3. Em Tipos de conta suportados, selecione os tipos de conta apropriados para o seu cenário.

    4. Em Restringir acesso, selecione Exigir autenticação.

    5. Para solicitações não autenticadas, selecione a opção com base no seu cenário.

    6. Quando terminar, selecione Adicionar.

    Na seção Provedor de identidade , a nova identidade do aplicativo para seu aplicativo Web ou aplicativo de API agora aparece:

    A captura de tela mostra a identidade do aplicativo recém-criado para o aplicativo Web ou o aplicativo API.

    Gorjeta

    Se a identidade do aplicativo não aparecer, na barra de ferramentas, selecione Atualizar.

Agora você deve encontrar a ID do aplicativo (cliente) e a ID do locatário para a identidade do aplicativo que você acabou de criar para seu aplicativo Web ou aplicativo de API. Você usa esses IDs na Parte 3. Portanto, continue com as etapas a seguir para o portal do Azure.

Encontre o ID de cliente e o ID de inquilino da identidade da aplicação para a sua aplicação Web ou de API no portal do Azure

  1. No menu do aplicativo Web, em Gerenciar, selecione Autenticação.

  2. Na seção Provedor de identidade , localize a identidade do aplicativo criado anteriormente. Selecione o nome da identidade do aplicativo.

    A captura de tela mostra a página Autenticação aberta para a identidade do aplicativo recém-criado.

  3. Na página Visão geral , localize os valores para ID do aplicativo (cliente) e ID do diretório (locatário). Copie e salve os valores para uso na Parte 3.

    A captura de ecrã mostra a página Visão geral aberta para a identidade da aplicação web e os valores selecionados para o ID da aplicação (cliente) e o ID do diretório (locatário).

    Você também pode usar o GUID do locatário no modelo de implementação da sua aplicação web ou aplicação de API, se necessário. Este GUID é o GUID do seu inquilino específico ("ID do inquilino") e deve aparecer neste URL: https://sts.windows.net/<tenant-GUID>

Configurar a autenticação ao implantar com um modelo do Azure Resource Manager

Se você estiver usando um modelo do Azure Resource Manager (modelo ARM), ainda precisará criar uma identidade de aplicativo Microsoft Entra para seu aplicativo Web ou aplicativo de API que seja diferente da identidade do aplicativo para seu aplicativo lógico. Para criar a identidade do aplicativo e, em seguida, localizar a ID do cliente e a ID do locatário, siga as etapas anteriores na Parte 2 para o portal do Azure. Você usará a ID do cliente e a ID do locatário no modelo de implantação do seu aplicativo e também para a Parte 3.

Importante

Ao criar a identidade do aplicativo Microsoft Entra para seu aplicativo Web ou aplicativo de API, você deve usar o portal do Azure, não o PowerShell. O commandlet do PowerShell não configura as permissões necessárias para entrar usuários em um site.

Depois de obter a ID do cliente e a ID do locatário, inclua essas IDs como um subrecurso do seu aplicativo Web ou aplicativo de API em seu modelo de implantação:

"resources": [
   {
      "apiVersion": "2015-08-01",
      "name": "web",
      "type": "config",
      "dependsOn": ["[concat('Microsoft.Web/sites/','parameters('webAppName'))]"],
      "properties": {
         "siteAuthEnabled": true,
         "siteAuthSettings": {
            "clientId": "<client-ID>",
            "issuer": "https://sts.windows.net/<tenant-ID>/"
         }
      }
   }
]

Para implantar automaticamente um aplicativo Web em branco e um aplicativo lógico junto com a autenticação do Microsoft Entra, exiba o modelo completo aqui ou selecione o seguinte botão Implantar no Azure :

Implementar no Azure

Parte 3: Preencher a seção Autorização em seu aplicativo lógico

O modelo anterior já tem essa seção de autorização configurada, mas se você estiver criando diretamente sua definição de aplicativo lógico, deverá incluir a seção de autorização completa.

  1. Abra sua definição de aplicativo lógico na visualização de código.

  2. Vá para a definição de ação HTTP , localize a seção Autorização e inclua as seguintes propriedades:

{
   "tenant": "<tenant-ID>",
   "audience": "<client-ID-from-Part-2-web-app-or-API app>",
   "clientId": "<client-ID-from-Part-1-logic-app>",
   "secret": "<secret-from-Part-1-logic-app>",
   "type": "ActiveDirectoryOAuth"
}
Propriedade Necessário Descrição
tenant Sim O GUID para o locatário do Microsoft Entra.
audience Sim O GUID do recurso de destino que você deseja acessar, que é a ID do cliente da identidade do aplicativo para seu aplicativo Web ou aplicativo de API.
clientId Sim O GUID do cliente que solicita acesso, que é o ID do cliente da identidade do aplicativo para seu aplicativo lógico.
secret Sim O segredo ou senha da identidade do aplicativo para o cliente que está solicitando o token de acesso.
type Sim O tipo de autenticação. Para autenticação ActiveDirectoryOAuth, o valor é ActiveDirectoryOAuth.

Por exemplo:

{
   "actions": {
      "HTTP": {
         "inputs": {
            "method": "POST",
            "uri": "https://your-api-azurewebsites.net/api/your-method",
            "authentication": {
               "tenant": "tenant-ID",
               "audience": "client-ID-from-azure-ad-app-for-web-app-or-api-app",
               "clientId": "client-ID-from-azure-ad-app-for-logic-app",
               "secret": "key-from-azure-ad-app-for-logic-app",
               "type": "ActiveDirectoryOAuth"
            }
         }
      }
   }
}

Chamadas de API seguras através de código

Autenticação de certificados

Para validar as solicitações de entrada do fluxo de trabalho do aplicativo lógico para o aplicativo Web ou aplicativo de API, você pode usar certificados de cliente. Para configurar seu código, saiba como configurar a autenticação mútua TLS.

Importante

Sempre proteja e proteja dados confidenciais e pessoais, como credenciais, segredos, chaves de acesso, cadeias de conexão, certificados, impressões digitais e informações semelhantes com o mais alto nível de segurança disponível ou suportado.

Certifique-se de armazenar essas informações com segurança usando o Microsoft Entra ID e o Azure Key Vault. Não codifice essas informações, compartilhe com outros usuários ou salve em texto sem formatação em qualquer lugar que outras pessoas possam acessar. Estabeleça um plano para alternar ou revogar segredos caso sejam comprometidos. Para obter mais informações, consulte os seguintes recursos:

Na seção Autorização, inclua as seguintes propriedades:

{
   "type": "ClientCertificate",
   "password": "<password>",
   "pfx": "<long-pfx-key>"
}
Propriedade Necessário Descrição
type Sim O tipo de autenticação. Para certificados de cliente TLS/SSL, o valor deve ser ClientCertificate.
password Não A senha para acessar o certificado do cliente (arquivo PFX).
pfx Sim O conteúdo codificado em base64 do certificado do cliente (arquivo PFX).

Autenticação básica

Para validar solicitações de entrada do seu aplicativo lógico para seu aplicativo Web ou aplicativo de API, você pode usar a autenticação básica, como um nome de usuário e senha. Embora a autenticação básica seja um padrão comum e você possa usar essa autenticação em qualquer idioma usado para criar seu aplicativo Web ou aplicativo de API, sempre use o melhor nível de autenticação disponível ou com suporte.

Advertência

A Microsoft desaconselha o uso dos seguintes fluxos para autenticação e autorização:

  • Credenciais de senha do proprietário do recurso (ROPC) para OAuth 2.0

    Esse fluxo permite que você entre em um aplicativo com uma senha. O fluxo é incompatível com a autenticação multifator (MFA), requer um grau muito alto de confiança no aplicativo e acarreta riscos que não existem em outros fluxos. Use esse fluxo somente se outros fluxos mais seguros não forem suportados ou não estiverem disponíveis.

    Para obter mais informações, consulte Credenciais de senha do proprietário do recurso Oauth 2.0.

  • Fluxo de concessão implícito para OAuth 2.0

    Este fluxo baseado em tokens destina-se a aplicações Web tradicionais, onde o servidor tem um controlo mais seguro sobre o processamento de POST dados e é frequentemente utilizado com o fluxo de código de autorização. Devido à forma como esse fluxo lida e retorna tokens de ID ou tokens de acesso, o fluxo requer um grau muito alto de confiança no aplicativo e traz riscos que não existem em outros fluxos. Use esse fluxo somente quando outros fluxos mais seguros não forem suportados ou não estiverem disponíveis.

    Para obter mais informações, consulte Fluxo de concessão implícito do OAuth 2.0.

Na seção Autorização, inclua as seguintes propriedades:

{
   "type": "Basic",
   "username": "<username>",
   "password": "<password>"
}
Propriedade Necessário Descrição
type Sim O tipo de autenticação que você deseja usar. Para autenticação básica, o valor deve ser **Basic**.
username Sim O nome de usuário que você deseja usar para autenticação.
password Sim A senha que você deseja usar para autenticação.

Autenticação do Microsoft Entra por meio de código

Por padrão, a autenticação do Microsoft Entra que você ativa no portal do Azure não fornece autorização refinada. Por exemplo, essa autenticação bloqueia sua API apenas para um locatário específico, não para um usuário ou aplicativo específico.

Para restringir o acesso da API ao seu aplicativo lógico por meio de código, extraia o cabeçalho que tem o token da Web JSON (JWT). Verifique a identidade do chamador e rejeite solicitações que não correspondem.

Próximos passos