BLOG | NGINX

Acesso seguro à API com NGINX e Azure Active Directory

NGINX-Parte-de-F5-horiz-preto-tipo-RGB
Miniatura de Cody Green
Cody Verde
Publicado em 06 de outubro de 2022

As APIs desempenham um papel fundamental na conectividade de aplicativos, mas também são vulneráveis a ataques. No passado, com aplicativos monolíticos, havia apenas um ponto de entrada a ser protegido. Em arquiteturas de microsserviços, um único aplicativo geralmente consiste em muitos microsserviços conectados por meio de APIs, e cada uma dessas APIs pode ter centenas de endpoints. Isso torna a superfície potencial de ataque para APIs enorme, com cada nova API criando um ponto de entrada no seu perímetro de segurança.

Existem muitas estratégias para proteger suas APIs. Um dos mais fundamentais é o controle de acesso . Simplificando, você deve verificar a identidade do usuário (autenticação ou AuthN) e confirmar que ele pode acessar determinados recursos (autorização ou AuthZ). A implementação do OpenID Connect (OIDC) é uma das abordagens de controle de acesso mais comuns usadas para APIs. Você pode colocá-lo em funcionamento em minutos com o API Connectivity Manager , parte do F5 NGINX Management Suite .

Neste tutorial, você aprenderá como executar a parte de autorização do fluxo de trabalho do OIDC configurando a validação do JSON Web Token (JWT) com o API Connectivity Manager e o Azure Active Directory (Azure AD).

O que é OpenID Connect?

O OpenID Connect (OIDC) é um protocolo de identidade criado com base no protocolo OAuth 2.0 . O OIDC permite que os clientes verifiquem a identidade do usuário final ou do dispositivo. Esta é uma parte do controle de acesso, que inclui autenticação e autorização:

  • A autenticação verifica se um usuário ou dispositivo é quem ele afirma ser
  • A autorização determina o que um usuário ou dispositivo verificado pode acessar

Existem muitas implementações diferentes do OIDC, incluindo o Azure AD, que você usará neste tutorial. Como alternativa, você pode usar outras soluções OIDC – como F5 BIG-IP Access Policy Manager (APM), Okta, Auth0, Ping Identity e mais – com o API Connectivity Manager.

O que você precisa para começar

Certifique-se de ter os seguintes pré-requisitos:

Você pode se inscrever para uma avaliação gratuita de 30 dias do NGINX Management Suite se precisar de acesso ao API Connectivity Manager.

Criar um aplicativo do Azure AD

Abra um navegador e faça login no seu Portal do Azure .

Clique em Registros de aplicativos no menu à esquerda.

Página inicial do portal do Azure AD

Figura 1: Página inicial do portal do Azure AD

Clique no botão Novo registro .

Registro do aplicativo Azure AD

Figura 2: Registro do aplicativo Azure AD

Para criar um novo aplicativo, forneça um nome , um URI de redirecionamento e clique no botão Registrar . Nesta demonstração, você utilizará o Postman , ou seja, usará o URI de redirecionamento OIDC do Postman .

Criar um novo aplicativo do Azure AD

Figura 3: Criar um novo aplicativo do Azure AD

Agora que seu aplicativo foi criado, você precisa criar escopos OAuth para fornecer acesso à API. Clique no link Expose an API no menu à esquerda.

Expor uma API

Figura 4: Expor uma API

Clique em Adicionar um escopo .

Adicionar um escopo

Figura 5: Adicionar um escopo

Aceite o URI do ID do aplicativo padrão ou crie o seu próprio e clique no botão Salvar e continuar . Se quiser criar seu próprio URI de ID de aplicativo, você deverá registrar o domínio desejado no Azure AD.

URL do ID do aplicativo

Figura 6: URL do ID do aplicativo

Para esta demonstração, seu escopo é baseado em um exemplo da Microsoft. Preencha o formulário com as seguintes informações e clique no botão Adicionar escopo :

Nome do escopo: Funcionários.Ler.Tudo
Quem pode consentir?: Administradores e usuários
Nome de exibição do consentimento do administrador: Acesso somente leitura aos registros de funcionários
Descrição do consentimento do administrador: Permitir acesso somente leitura a todos os dados dos funcionários.
Nome de exibição do consentimento do usuário: Acesso somente leitura aos seus registros de funcionários
Descrição do consentimento do usuário: Permita acesso somente leitura aos dados dos seus funcionários.

Adicionar um escopo

Figura 7: Adicionar um escopo

Em seguida, você precisa autorizar o aplicativo cliente. Para fazer isso, pegue o Client ID. Clique no link Overview no menu à esquerda e copie o Application (client) ID .

ID do cliente do aplicativo

Figura 8: ID do cliente do aplicativo

Clique no link Expor uma API novamente e, em seguida, clique no botão Adicionar um aplicativo cliente .

Adicionar um aplicativo cliente

Figura 9: Adicionar um aplicativo cliente

Cole o Application Client ID no campo Client ID e selecione a caixa de seleção ao lado do Application ID URI. Em seguida, clique no botão Add application .

Adicionar um aplicativo cliente

Figura 10: Adicionar um aplicativo cliente

Em seguida, para esta demonstração, você utilizará um código de autorização com o Fluxo de Código de Autorização , portanto, um segredo de cliente será necessário para o Postman. Clique no link Certificados e segredos no menu à esquerda e depois clique no botão Novo segredo do cliente .

Novo segredo do cliente

Figura 11: Novo segredo do cliente

Dê um nome ao seu segredo e deixe o tempo de expiração padrão.

Nome Secreto

Figura 12: Nome Secreto

Em seguida, copie seu segredo de cliente e armazene-o em um cofre de senhas para que você possa usá-lo mais tarde.

Segredo do cliente

Figura 13: Segredo do cliente

Configurar a asserção JWT no API Connectivity Manager

Agora que seu aplicativo do Azure AD está configurado, você pode configurar o cluster do gateway de API no API Connectivity Manager para executar a Asserção de Token Web JSON para seu serviço definido. Para esta etapa, você precisará determinar o URI para os conjuntos de chaves da Web JSON (JWK) do seu locatário do Azure AD.

Você pode obter seu URI JWKS em Ponto de extremidade conhecido do locatário do Azure AD:
https://login.microsoftonline.com/<tenant-id>/v2.0/.well-known/openid-configuration

Esta página fornecerá uma carga JSON que contém a chave jwks_uri . Você precisará copiar seu valor.

Ponto de extremidade conhecido do locatário do Azure AD

Figura 14: Ponto de extremidade conhecido do locatário do Azure AD

Agora que você tem seu URI JWKS, abra o console do API Connectivity Manager e navegue até a configuração do seu proxy de serviço. Clique em Adicionar política para a política de asserção de token da Web JSON .

Políticas de proxy do serviço de gateway

Figura 15: Políticas de proxy do serviço de gateway

Em seguida, cole o URI JKWS do seu locatário do Azure AD no campo Local do URI e clique no botão Adicionar .

Política de Asserção de Token da Web JSON

Figura 16: Política de Asserção de Token da Web JSON

Clique no botão Salvar e publicar para enviar esta política para seu cluster de gateway de API.

Política de Gateway de Serviço

Figura 17: Política de Gateway de Serviço

É isso! Sua instância do API Connectivity Manager agora está configurada para executar a asserção JWT no gateway de serviço configurado.

Testando com o Postman

Agora, é hora de testar sua configuração e garantir que ela se comporte conforme o esperado. Para começar, há algumas coisas que você precisa obter do seu aplicativo do Azure AD:

  • Segredo do cliente do aplicativo (você salvou isso antes)
  • Escopo OAuth
  • Ponto de extremidade de autorização OAuth
  • Ponto final do token OAuth

Para obter o escopo do OAuth, abra o portal do Azure e volte para a página de registro do aplicativo. Em seguida, clique no link Expor uma API no menu à esquerda e clique no símbolo Copiar para seu escopo. Salve esse valor para que você possa usá-lo em alguns minutos.

Escopos de API

Figura 18: Escopos de API

Para obter a autorização OAuth e os pontos de extremidade do token, clique no link Visão geral no menu à esquerda e, em seguida, clique no botão Pontos de extremidade . Depois disso, copie os URIs de autorização e de endpoint do token.

Pontos de extremidade do aplicativo Azure AD

Figura 19: Pontos de extremidade do aplicativo Azure AD

URLs de ponto de extremidade do aplicativo do Azure AD

Figura 20: URLs de ponto de extremidade do aplicativo do Azure AD

Abra o Postman e clique no menu Ambientes . Em seguida, clique no link Criar ambiente .

Postman cria ambiente

Figura 21: Postman Criar Ambiente

Dê um nome ao seu ambiente e adicione seis variáveis com os valores (salvos das etapas anteriores) na coluna Valor Inicial e na coluna Valor Atual e, em seguida, clique no botão Salvar .

  • ID do cliente : ID do cliente do aplicativo do Azure AD
  • segredo_do_cliente : Segredo do cliente do aplicativo Azure AD
  • URL de autenticação : URL de autorização OAuth do locatário do Azure AD
  • token_url : URL do token OAuth do locatário do Azure AD
  • id_do_inquilino : ID do diretório do Azure AD (locatário)
  • escopo : Escopo da API do aplicativo do Azure AD com URL da ID do aplicativo

Variáveis de ambiente do Postman

Figura 22: Variáveis de ambiente do Postman

Abra uma nova aba no Postman e siga estes passos:

  • Altere seu ambiente para ACM no canto superior direito
  • Adicione a URL da sua API à barra de endereço
  • Clique na aba Autenticação
  • Alterar o tipo para OAuth 2.0
  • Role para baixo na configuração de autenticação e defina as seguintes variáveis:
    • URL de autenticação: {{auth_url}}
    • URL do token de acesso: {{token_url}}
    • ID do cliente: {{client_id}}
    • Segredo do cliente: {{client_secret}}
  • Clique no botão Obter novo token de acesso

Pedido do Carteiro

Figura 23: Pedido do Carteiro

Configuração de autenticação do Postman

Figura 24: Configuração de autenticação do Postman

Uma janela do navegador será aberta e você será solicitado a efetuar login com suas credenciais do Azure AD. Após a autenticação bem-sucedida, você será redirecionado de volta ao Postman, e a seguinte janela aparecerá. Clique no botão Usar Token .

Token de uso do carteiro

Figura 25: Token de uso do carteiro

Agora que você tem seu token de acesso OAuth, você pode finalmente fazer sua chamada de API. Clique no botão Salvar e depois no botão Enviar .

Se tudo estiver configurado corretamente, você deverá ver uma resposta 200 OK.

Carteiro Solicitação Bem-Sucedida

Figura 26: Carteiro Solicitação Bem-Sucedida

Conclusão

Agora você tem o API Connectivity Manager protegendo suas APIs usando tokens de acesso OAuth do Azure AD. Os próximos passos seriam adicionar escopos OAuth adicionais e configurar o cluster do gateway de API no API Connectivity Manager para passar esses escopos para suas APIs protegidas – mas esse é um tópico para outra postagem!

Comece hoje mesmo

Inicie uma avaliação gratuita de 30 dias do NGINX Management Suite , que inclui o API Connectivity Manager e o Instance Manager .

Uma versão desta postagem apareceu pela primeira vez em codygreen.com . Foi editado e reimpresso aqui com a permissão do autor.


"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."