Usar o proxy de aplicativo do Microsoft Entra para fornecer acesso seguro a uma API (Interface de Programação de Aplicativo) hospedada em uma nuvem privada ou local
A lógica de negócios geralmente reside em uma API (Interface de Programação de Aplicativo) privada. A API é executada no local ou em uma nuvem privada. Seus aplicativos Android, iOS, Mac ou Windows nativos precisam interagir com os pontos de extremidade da API para usar dados ou fornecer interação do usuário. O proxy de aplicativo do Microsoft Entra e a Biblioteca de Autenticação da Microsoft (MSAL) permitem que seus aplicativos nativos acessem as APIs na nuvem privada com segurança. O proxy de aplicativo do 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 de aplicativo.
Dica
Local é um termo herdado que remonta à época 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 local e nuvem privada são usados de forma intercambiável.
Este artigo explica como configurar uma solução de proxy de aplicativo do Microsoft Entra para hospedar um serviço de API Web que os aplicativos nativos podem acessar.
O diagrama a seguir mostra uma maneira tradicional de publicar APIs locais. Essa abordagem requer a abertura das portas de entrada 80 e 443.
O diagrama a seguir mostra como você pode usar o proxy de aplicativo do Microsoft Entra para publicar APIs com segurança sem abrir portas de entrada:
O proxy de aplicativo do Microsoft Entra forma o backbone 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 ampla matriz 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 no Microsoft Entra ID, você pode usar o Acesso Condicional do Microsoft Entra para garantir que somente dispositivos confiáveis possam acessar APIs publicadas por meio do proxy de aplicativo. Use o Ingresso no Microsoft Entra ou Ingressado no Microsoft Entra híbrido para desktops e o Intune Gerenciado 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 com suporte de aprendizado de máquina do Microsoft Entra ID Protection.
Para concluir esta explicação passo a passo, será necessário:
- 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 MSAL (Biblioteca de Autenticação da Microsoft)
Para publicar uma API fora da sua intranet por meio do proxy de aplicativo, você segue o mesmo padrão para publicar aplicativos Web. Para obter mais informações, consulte Tutorial: adicionar um aplicativo local para acesso remoto por meio do proxy de aplicativo no Microsoft Entra ID.
Para publicar a API Web do SecretAPI por meio do proxy de aplicativo:
Crie e publique um projeto SecretAPI de exemplo como um aplicativo Web ASP.NET no computador local ou na intranet. Verifique se você pode acessar o aplicativo Web localmente.
Entre no Centro de administração do Microsoft Entra pelo menos como um Administrador de Aplicativo.
Navegue até Identidade>Aplicativos>Aplicativos empresariais.
Na parte superior da página Aplicativos empresariais – Todos os aplicativos, selecione Novo aplicativo.
Na página Procurar na Galeria do 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 você não tiver um conector de rede privada instalado, será solicitado que você o instale. 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, insira SecretAPI.
Ao lado de URL interna, insira a URL que você usa para acessar a API de dentro de sua intranet.
Verifique se a Pré-autenticação está definida como Microsoft Entra ID.
Selecione Criar e aguarde até que o aplicativo seja criado.
Na página Aplicativos empresariais – Todos os aplicativos, selecione o aplicativoSecretAPI.
Na página SecretAPI – Visão geral, selecione Propriedades no painel de navegação esquerdo.
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, em seguida, selecione Salvar.
A API Web agora é publicada por meio do proxy de aplicativo do Microsoft Entra. Depois, adicione usuários que podem acessar o aplicativo.
Na página SecretAPI – visão geral, selecione Usuários e grupos no painel de navegação esquerdo.
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.
Na página Adicionar Atribuição, selecione Atribuir.
Observação
AS APIs que usam a Autenticação Integrada do Windows podem exigir etapas adicionais.
Aplicativos nativos são programas desenvolvidos para usar em uma plataforma ou dispositivo específico. Antes que seu aplicativo nativo possa se conectar e acessar uma API, você deve registrá-la no Microsoft Entra ID. As etapas a seguir mostram como registrar um aplicativo nativo e dar a ele acesso à API Web que você publicou por meio do proxy de aplicativo.
Para registrar o aplicativo nativo AppProxyNativeAppSample:
Entre no Centro de administração do Microsoft Entra pelo menos como um Administrador de Aplicativo.
Navegue até Identidade>Aplicativos>Aplicativos empresariais>Registros de aplicativo.
Selecione Novo registro.
Insira informações na página Registrar um aplicativo.
Em Nome, insira AppProxyNativeAppSample.
Em Tipos de conta com suporte, selecione Contas somente neste diretório organizacional (somente Contoso – único locatário).
Em URL de Redirecionamento, selecione Cliente público/nativo (área de trabalho e móvel) e insira *https://login.microsoftonline.com/common/oauth2/nativeclient *.
Selecione Registrar e aguarde até que o aplicativo seja registrado com êxito.
O aplicativo AppProxyNativeAppSample
agora está registrado com o Microsoft Entra ID. Para dar ao aplicativo nativo acesso à API Web SecretAPI
:
Na página Registros de aplicativo, selecione o aplicativo AppProxyNativeAppSample.
Na página AppProxyNativeAppSample, selecione Permissões de API no painel de navegação esquerdo.
Na página Permissões de API, escolha Adicionar uma permissão.
No painel Solicitar permissões de API, selecione a guia APIs que a minha organização usa, e, em seguida, pesquise e selecione SecretAPI.
Na próxima página Solicitar permissões de API, marque a caixa de seleção ao lado de user_impersonation e, em seguida, selecione Adicionar permissões.
De volta à página Permissões de API, você pode selecionar Conceder consentimento do administrador para a Contoso para impedir que outros usuários tenham que consentir individualmente com o aplicativo.
A última etapa é configurar o aplicativo nativo. O código deve ser adicionado ao arquivo Form1.cs
no aplicativo de exemplo NativeClient
. O código usa a biblioteca MSAL para adquirir o token. O token solicita a chamada à API e a anexa ao cabeçalho na solicitação. O token é anexado como um certificado de portador. Para obter mais informações sobre a MSAL, consulte Adicionar a MSAL ao seu projeto e Adicionar a referência à MSAL.
Em Form1.cs, adicione o namespace
using Microsoft.Identity.Client;
ao código.Edite o código de aplicativo nativo no contexto de autenticação da MSAL (Biblioteca de Autenticação da Microsoft) 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 de aplicativo. Em seguida, atualize os valores de espaço reservado no arquivo App.config
do NativeClient sample app
com valores do Microsoft Entra ID.
Cole a ID do diretório (locatário) no campo
<add key="ida:Tenant" value="" />
. Você pode encontrar e copiar esse valor (um GUID) da página Visão geral de qualquer um dos seus aplicativos.Cole a ID do aplicativo (cliente) AppProxyNativeAppSample no campo
<add key="ida:ClientId" value="" />
. Encontre e copie esse valor (um GUID) na página Visão geral do AppProxyNativeAppSample, no painel de navegação à esquerda em Gerenciar.Cole o URI de redirecionamento do AppProxyNativeAppSample no campo
<add key="ida:RedirectUri" value="" />
. Encontre e copie esse valor (um URI) na página Autenticação do AppProxyNativeAppSample, no painel de 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 da ID do Aplicativo SecretAPI no campo
<add key="todo:TodoListResourceId" value="" />
. O valor é o mesmo quetodo:TodoListBaseAddress
. O valor do URI está localizado na página Expor uma API do aplicativoSecretAPI
. Observe no painel de navegação esquerdo, em Gerenciar.Cole a URL da Home Page do SecretAPI no campo
<add key="todo:TodoListBaseAddress" value="" />
. Encontre e copie esse valor (uma URL) na página Identidade visual e propriedades da SecretAPI, no painel de navegação à esquerda em Gerenciar.
Observação
Se a solução não criar 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. Comente as linhas 121 a 123.
Depois de configurar os parâmetros, compile e execute o aplicativo nativo. Quando você seleciona o botão Entrar, o aplicativo permite que você entre e, em seguida, exibe uma tela de êxito para confirmar que ele se conectou com êxito ao SecretAPI.