Use o proxy de aplicativo Microsoft Entra para fornecer acesso seguro a uma Interface de Programação de Aplicativo (API) hospedada em uma nuvem privada ou no local
A lógica de negócios geralmente vive em uma interface de programação de aplicativos (API) privada. A API é executada no local ou em uma nuvem privada. Seus aplicativos nativos para Android, iOS, Mac ou Windows precisam interagir com os pontos de extremidade da API para usar dados ou fornecer interação com o usuário. O proxy de aplicativo Microsoft Entra e a Biblioteca de Autenticação da Microsoft (MSAL) permitem que seus aplicativos nativos acessem com segurança suas APIs de nuvem privada. O proxy de aplicativo Microsoft Entra é uma solução mais rápida e segura do que abrir portas de firewall e controlar a autenticação e a autorização na camada do aplicativo.
Gorjeta
No local é um termo legado que remonta ao tempo em que os servidores físicos estavam localizados nas instalações do escritório corporativo. Hoje em dia, muitas cargas de trabalho auto-hospedadas são executadas em uma máquina virtual em um datacenter. O termo no local e a nuvem privada são usados indistintamente.
Este artigo orienta você na configuração de uma solução de proxy de aplicativo Microsoft Entra para hospedar um serviço de API da Web que os aplicativos nativos podem acessar.
Descrição geral
O diagrama a seguir mostra uma maneira tradicional de publicar APIs locais. Esta abordagem requer a abertura das portas de entrada 80 e 443.
O diagrama a seguir mostra como você pode usar o proxy de aplicativo Microsoft Entra para publicar APIs com segurança sem abrir nenhuma porta de entrada:
O proxy de aplicativo Microsoft Entra forma a espinha dorsal da solução, funcionando como um ponto de extremidade público para acesso à API e fornecendo autenticação e autorização. Você pode acessar suas APIs de uma vasta gama de plataformas usando as bibliotecas da Biblioteca de Autenticação da Microsoft (MSAL).
Como a autenticação e a autorização do proxy de aplicativo do Microsoft Entra são criadas com base na ID do Microsoft Entra, você pode usar o Acesso Condicional do Microsoft Entra para garantir que apenas dispositivos confiáveis possam acessar APIs publicadas por meio do proxy de aplicativo. Utilize o Microsoft Entra join ou o Microsoft Entra hybrid joined para ambientes de trabalho e o Intune Managed para dispositivos. Você também pode aproveitar os recursos do Microsoft Entra ID P1 ou P2, como a autenticação multifator do Microsoft Entra e a segurança apoiada por aprendizado de máquina do Microsoft Entra ID Protection.
Pré-requisitos
Para seguir este passo a passo, você precisa:
- Acesso de administrador a um diretório do Azure, com uma conta que pode criar e registrar aplicativos
- A API Web de exemplo e os aplicativos cliente nativos da Biblioteca de Autenticação da Microsoft (MSAL)
Publicar a API por meio de proxy de aplicativo
Para publicar uma API fora da intranet por meio do proxy de aplicativo, siga o mesmo padrão da publicação de aplicativos Web. Para obter mais informações, consulte Tutorial: Adicionar um aplicativo local para acesso remoto por meio de proxy de aplicativo no Microsoft Entra ID.
Para publicar a API Web SecretAPI por meio do proxy do aplicativo:
Crie e publique o projeto SecretAPI de exemplo como um aplicativo Web ASP.NET em seu computador local ou intranet. Certifique-se de que consegue aceder à aplicação Web localmente.
Entre no centro de administração do Microsoft Entra como pelo menos um Administrador de Aplicativos.
Navegue até Aplicativos de identidade>>Aplicativos corporativos.
Na parte superior da página Aplicativos corporativos - Todos os aplicativos, selecione Novo aplicativo.
Na página Procurar na Galeria Microsoft Entra, localize a seção Aplicativos locais e selecione Adicionar um aplicativo local. A página Adicionar seu próprio aplicativo local é exibida.
Se não tiver um conector de rede privada instalado, ser-lhe-á pedido para instalá-lo. Selecione Baixar conector de rede privada para baixar e instalar o conector.
Adicione informações na página Adicionar seu próprio aplicativo local.
Ao lado de Nome, digite SecretAPI.
Ao lado de URL interno, insira o URL que você usa para acessar a API de dentro da intranet.
Verifique se Pré-autenticação está definida como ID do Microsoft Entra.
Selecione Criar e aguarde até que o aplicativo seja criado.
Na página Aplicativos corporativos - Todos os aplicativos, selecione o aplicativo SecretAPI.
Na página SecretAPI - Overview (SecretAPI - Visão geral), selecione Propriedades na navegação à esquerda.
Você não quer que as APIs estejam disponíveis para os usuários finais no painel MyApps , portanto, defina Visível para os usuários como Não na parte inferior da página Propriedades e selecione Salvar.
A API da Web agora é publicada por meio do proxy de aplicativo Microsoft Entra. Em seguida, adicione usuários que possam acessar o aplicativo.
Na página SecretAPI - Visão geral, selecione Usuários e grupos na navegação à esquerda.
Na página Usuários e grupos, selecione Adicionar usuário.
Na página Adicionar atribuição, selecione Usuários e grupos.
Na página Usuários e grupos, pesquise e selecione os usuários que podem acessar o aplicativo, incluindo pelo menos você mesmo. Depois de selecionar todos os usuários, selecione Selecionar.
De volta à página Adicionar Atribuição, selecione Atribuir.
Nota
As APIs que usam a autenticação integrada do Windows podem exigir etapas adicionais.
Registrar o aplicativo nativo e conceder acesso à API
Aplicativos nativos são programas desenvolvidos para uso em uma determinada plataforma ou dispositivo. Antes que seu aplicativo nativo possa se conectar e acessar uma API, você deve registrá-lo no Microsoft Entra ID. As etapas a seguir mostram como registrar um aplicativo nativo e dar-lhe acesso à API da Web que você publicou por meio do proxy do aplicativo.
Para registrar o aplicativo nativo AppProxyNativeAppSample:
Entre no centro de administração do Microsoft Entra como pelo menos um Administrador de Aplicativos.
Navegue até Aplicativos de identidade>>, aplicativos>corporativos, registros de aplicativos.
Selecione Novo registo.
Insira as informações na página Registrar um aplicativo .
Em Nome, insira AppProxyNativeAppSample.
Em Tipos de conta suportados, selecione Contas apenas neste diretório organizacional (somente Contoso - Locatário único).
Em URL de redirecionamento, selecione Cliente público/nativo (móvel ou desktop) e digite *https://login.microsoftonline.com/common/oauth2/nativeclient *.
Selecione Registrar e aguarde até que o aplicativo seja registrado com êxito.
A AppProxyNativeAppSample
aplicação está agora registada no Microsoft Entra ID. Dê ao seu aplicativo nativo acesso à SecretAPI
API da Web:
Na página Registros de aplicativos, selecione o aplicativo AppProxyNativeAppSample.
Na página AppProxyNativeAppSample, selecione permissões de API na navegação à esquerda.
Na página Permissões da API, selecione Adicionar uma permissão.
Na primeira página Solicitar permissões de API, selecione a guia APIs que minha organização usa e, em seguida, procure e selecione SecretAPI.
Na próxima página Solicitar permissões da API, marque a caixa de seleção ao lado de user_impersonation e selecione Adicionar permissões.
De volta à página de permissões da API, você pode selecionar Conceder consentimento de administrador para a Contoso para evitar que outros usuários tenham que consentir individualmente com o aplicativo.
Configurar o código nativo do aplicativo
A última etapa é configurar o aplicativo nativo. O código deve ser adicionado ao Form1.cs
arquivo no NativeClient
aplicativo de exemplo. O código usa a biblioteca MSAL para adquirir o token. O token solicita a chamada de API e a anexa ao cabeçalho da solicitação. O token é anexado como um certificado ao portador. Para obter mais informações sobre MSAL, consulte Adicionar MSAL ao seu projeto e Adicionar a referência ao MSAL.
No Form1.cs, adicione o namespace
using Microsoft.Identity.Client;
ao código.Edite o código do aplicativo nativo no contexto de autenticação da Microsoft Authentication Library (MSAL) para incluir este exemplo de código personalizado.
Configure o aplicativo nativo para se conectar ao Microsoft Entra ID e chamar a API usando o proxy do aplicativo. Em seguida, atualize os valores de espaço reservado no App.config
arquivo do NativeClient sample app
com valores do Microsoft Entra ID.
Cole o ID do diretório (locatário) no
<add key="ida:Tenant" value="" />
campo. Você pode encontrar e copiar esse valor (um GUID) na página Visão geral de qualquer um dos seus aplicativos.Cole o ID do aplicativo AppProxyNativeAppSample (cliente) no
<add key="ida:ClientId" value="" />
campo. Você pode encontrar e copiar esse valor (um GUID) na página Visão geral do AppProxyNativeAppSample, na navegação à esquerda em Gerenciar.Cole o URI de redirecionamento AppProxyNativeAppSample no
<add key="ida:RedirectUri" value="" />
campo. Você pode encontrar e copiar esse valor (um URI) da página Autenticação do AppProxyNativeAppSample, na navegação à esquerda em Gerenciar. Esta etapa é opcional, pois a MSAL usa o métodoPublicClientApplicationBuilder.WithDefaultRedirectUri()
para inserir o URI (Uniform Resource Identifier) de resposta recomendado.Cole o URI do ID do Aplicativo SecretAPI no
<add key="todo:TodoListResourceId" value="" />
campo. O valor é o mesmo quetodo:TodoListBaseAddress
. O valor de URI está localizado na página Expor uma API doSecretAPI
aplicativo. Procure na navegação à esquerda em Gerir.Cole o URL da página inicial da SecretAPI no
<add key="todo:TodoListBaseAddress" value="" />
campo. Você pode encontrar e copiar esse valor (uma URL) na página de propriedades SecretAPI Branding & , na navegação à esquerda em Gerenciar.
Nota
Se a solução não compilar e relatar o erro arquivo Resx inválido, no Gerenciador de Soluções, expanda Propriedades, clique com o botão direito do mouse em Resources.resx e selecione Exibir Código. Linhas de comentário 121 a 123.
Depois de configurar os parâmetros, crie e execute o aplicativo nativo. Quando seleciona o botão Iniciar sessão , a aplicação permite-lhe iniciar sessão e, em seguida, apresenta um ecrã de êxito para confirmar que se ligou com êxito à SecretAPI.