API7 Enterprise v3.2.15: Autenticação Multi-Credencial
September 18, 2024
À medida que os serviços de API se tornam cada vez mais complexos, os métodos tradicionais de controle de acesso que dependem apenas de endereços IP ou cabeçalhos básicos de solicitação não são mais suficientes. A API7 Enterprise introduz o conceito de "Consumers", permitindo que os desenvolvedores vinculem consumidores a rotas ou serviços de API específicos com os mesmos plugins de autenticação habilitados. Quando um consumidor faz uma solicitação, o gateway de API identifica o consumidor com base nas credenciais fornecidas na solicitação e aplica as políticas de controle de acesso correspondentes de acordo com os relacionamentos de vinculação.
A API7 Enterprise v3.2.15 aprimora os mecanismos de autenticação de consumidores existentes. Ela otimiza as interações dos plugins comumente usados, melhora o controle de permissões e suporta múltiplas credenciais de autenticação por plugin. Isso permite um gerenciamento e rotação de credenciais mais flexíveis.
Interação Otimizada de Plugins de Autenticação de Consumidores
Você pode facilmente adicionar várias credenciais de autenticação em um único plugin de autenticação. A configuração foi atualizada de codificação para operações de formulário intuitivas, tornando o processo de configuração mais simples.
Atualmente, o consumidor suporta os seguintes quatro métodos de autenticação com múltiplas credenciais.
Autenticação por Chave
A Autenticação por Chave é um método baseado em chave. Os consumidores precisam incluir uma chave única em suas solicitações, que pode ser incluída nos parâmetros da string de consulta ou nos cabeçalhos HTTP. Ao configurar as solicitações, os consumidores devem garantir que a chave seja corretamente carregada nas solicitações.
Na configuração da rota ou serviço, o plugin Key Auth precisa ser habilitado com as regras apropriadas para validar a chave na solicitação. O gateway verifica se a solicitação contém a chave esperada e se a chave corresponde à configuração. Se a validação da chave for bem-sucedida, a solicitação é permitida para acessar o serviço de backend; se falhar, a solicitação é negada.
Autenticação Básica
A Autenticação Básica é um método baseado em nome de usuário e senha. Os consumidores precisam incluir informações de autenticação contendo o nome de usuário e senha na solicitação, geralmente codificadas no cabeçalho Authorization
da solicitação HTTP, mas também podem ser passadas via parâmetros da string de consulta, embora não seja recomendado devido à possível exposição de informações sensíveis. Os consumidores devem garantir que as informações de autenticação codificadas sejam corretamente incluídas ao configurar as solicitações.
Na configuração da rota ou serviço, o plugin Basic Auth precisa ser habilitado com as regras apropriadas para validar as informações de autenticação. O gateway verifica se a solicitação inclui o cabeçalho Authorization
e segue o formato de Autenticação Básica. O formato é Basic <valor-codificado>
, onde <valor-codificado>
é o resultado codificado em Base64 do nome de usuário e senha separados por dois pontos. O gateway decodifica esse valor e compara o nome de usuário e senha decodificados com as informações configuradas. Se corresponderem, a solicitação é permitida para acessar o serviço de backend; caso contrário, a solicitação é negada.
Observe que a Autenticação Básica transmite o nome de usuário e senha em texto claro, apenas codificados em Base64 (não criptografados), o que a torna inadequada para cenários de alta segurança.
Autenticação JWT
A Autenticação JWT é um método baseado em JSON Web Tokens (JWT). Os consumidores devem incluir um token JWT válido em suas solicitações, geralmente no cabeçalho Authorization
usando o formato Bearer <token>
, mas também pode ser colocado em parâmetros da string de consulta ou cookies, conforme necessário. Os consumidores devem garantir a correção e validade do token JWT ao configurar as solicitações.
Ao adicionar credenciais JWT, você pode configurar elementos-chave da geração do token JWT, incluindo a Chave (pública ou privada) para assinatura e verificação, o Segredo (chave para criptografia simétrica), o algoritmo usado (por exemplo, HMAC-SHA256 ou RSA-SHA256) e o tempo de expiração para definir o período de validade do token. Apenas consumidores com tokens válidos e não expirados podem acessar com sucesso os serviços de backend protegidos.
Autenticação HMAC
A Autenticação HMAC é um método baseado em Hash-based Message Authentication Code (HMAC). Os consumidores precisam gerar um valor HMAC para a solicitação, geralmente calculado usando uma chave pré-compartilhada e partes específicas da solicitação (por exemplo, método de solicitação, URI, corpo da solicitação). Esse valor HMAC pode ser incluído em parâmetros da string de consulta ou cabeçalhos HTTP.
Ao configurar as solicitações, os consumidores devem gerar e incluir corretamente o valor HMAC de acordo com o algoritmo e formato especificados. Especificamente, os consumidores usam uma chave conhecida e informações da solicitação para gerar o HMAC usando um algoritmo de hash (por exemplo, SHA-256) e o anexam à solicitação.
Na configuração da rota ou serviço, o plugin HMAC Auth precisa ser habilitado com as regras apropriadas para validar o valor HMAC na solicitação. O gateway verifica se o valor HMAC está presente na solicitação e recalcula o HMAC usando a mesma chave pré-compartilhada e algoritmo para verificar sua validade. Se o HMAC recalculado corresponder ao valor na solicitação, a solicitação é permitida para acessar o serviço de backend.
Políticas de Permissão de Consumidores Granulares
Além de otimizar o gerenciamento de credenciais, refinamos ainda mais o gerenciamento de permissões de consumidores. Agora você pode definir permissões no nível de consumidores individuais, permitindo um controle de acesso mais granular. As permissões de leitura e escrita para credenciais de autenticação agora são controladas independentemente, separadas das permissões de consumidores, proporcionando maior flexibilidade.
Resumo
A versão mais recente da API7 Enterprise introduz grandes melhorias na autenticação de consumidores e no gerenciamento de permissões. Ela otimiza as interações de plugins, permite o gerenciamento independente de credenciais, suporta múltiplos métodos de autenticação e refina as estratégias de permissão de consumidores. Esses aprimoramentos aumentam a flexibilidade do gerenciamento de credenciais, a segurança do sistema e a experiência geral do usuário.
Futuras atualizações podem introduzir métodos adicionais de autenticação e refinar ainda mais o gerenciamento de credenciais, oferecendo mais recursos inovadores e uma experiência de usuário aprimorada.