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 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:
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.
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.
Abra um navegador e faça login no seu Portal do Azure .
Clique em Registros de aplicativos no menu à esquerda.
Figura 1: Página inicial do portal do Azure AD
Clique no botão Novo registro .
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 .
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.
Figura 4: Expor uma API
Clique em 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.
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.
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 .
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 .
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 .
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 .
Figura 11: Novo segredo do cliente
Dê um nome ao seu segredo e deixe o tempo de expiração padrão.
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.
Figura 13: Segredo do cliente
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.
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 .
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 .
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.
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.
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:
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.
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.
Figura 19: Pontos de extremidade do aplicativo 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 .
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 .
Figura 22: Variáveis de ambiente do Postman
Abra uma nova aba no Postman e siga estes passos:
Figura 23: Pedido do Carteiro
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 .
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.
Figura 26: Carteiro Solicitação Bem-Sucedida
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!
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."