O plug-in key-auth autentica requisições ao extrair chaves de API de parâmetros de URL ou cabeçalhos HTTP e validar permissões de acesso.
Obter uma chave de API (credencial)
Cada chamador se autentica com um valor credential na configuração do plug-in, correspondente a uma chave em string definida por você. Não é necessária nenhuma configuração no console.
Ao definir uma credential, siga estas diretrizes:
Use uma string aleatória com mais de 32 caracteres, preferencialmente no formato UUID:
2bda943c-ba2b-11ec-ba07-00163e125d8fMantenha a credencial segura. Não a exponha em código client-side ou documentação pública.
Para atribuir permissões diferentes a vários chamadores, defina uma
credentialexclusiva para cada um e configure-as no campoconsumers.
Tipo de plug-in
Autenticação e autorização.
Campos
Configuração de autenticação
|
Item de configuração |
Tipo de dados |
Obrigatório |
Valor padrão |
Descrição |
|
consumers |
array de objetos |
Sim |
- |
Chamadores do serviço para autenticação de requisições. |
|
keys |
array de strings |
Sim |
- |
Nomes dos parâmetros de URL ou cabeçalhos HTTP de onde extrair as chaves de API. |
|
in_query |
bool |
Pelo menos um entre |
true |
Se definido como |
|
in_header |
bool |
Pelo menos um entre |
true |
Se definido como |
|
global_auth |
array de strings |
Não (Obrigatório apenas para configurações no nível da instância) |
- |
Exclusivo do nível da instância. Se true, a autenticação aplica-se globalmente. Se false, aplica-se apenas aos domínios e rotas configurados. Se não definido, a autenticação global ativa-se somente quando nenhum domínio ou rota estiver configurado. |
Campos no objeto consumers:
|
Item de configuração |
Tipo de dados |
Obrigatório |
Valor padrão |
Descrição |
|
credential |
string |
Sim |
- |
Credencial de acesso do consumidor. |
|
name |
string |
Sim |
- |
Nome do consumidor. |
Configuração de autorização (opcional)
|
Item de configuração |
Tipo de dados |
Obrigatório |
Valor padrão |
Descrição |
|
allow |
array de strings |
Não (Obrigatório para configurações fora do nível da instância) |
- |
Aplicável apenas nos níveis de rota ou domínio. Lista os consumidores autorizados a acessar as requisições correspondentes. |
As configurações de autorização e autenticação não podem coexistir na mesma regra.
Em requisições autenticadas, o sistema adiciona o cabeçalho
X-Mse-Consumerpara identificar o chamador.
Exemplo
Autenticação global com autorização no nível da rota
Este exemplo configura a autenticação no nível da instância e a autorização nos níveis de rota e domínio. Cada valor de credential deve ser exclusivo.
Configuração do plug-in no nível da instância:
global_auth: false
consumers:
- credential: 2bda943c-ba2b-11ec-ba07-00163e125***
name: consumer1
- credential: c8c8e9ca-558e-4a2d-bb62-e700dcc40***
name: consumer2
keys:
- apikey
- x-api-key
Configuração do plug-in para as rotas route-a e route-b:
allow:
- consumer1
Configuração do plug-in para os domínios *.example.com e test.com:
allow:
- consumer2
Se uma requisição corresponder a
route-aouroute-b, apenas o chamador comnamedefinido comoconsumer1terá acesso permitido.Se uma requisição corresponder a
*.example.comoutest.com, apenas o chamador comnamedefinido comoconsumer2terá acesso permitido.
Requisições permitidas (correspondentes à rota route-a):
-
Chave de API em parâmetro de URL:
curl http://xxx.hello.com/test?apikey=2bda943c-ba2b-11ec-ba07-00163e1*** -
Chave de API em cabeçalho HTTP:
curl http://xxx.hello.com/test -H 'x-api-key: 2bda943c-ba2b-11ec-ba07-00163e1***'
Após a autenticação bem-sucedida, o cabeçalho X-Mse-Consumer identifica o chamador. Neste exemplo, o valor é consumer1.
Requisições negadas:
-
Nenhuma chave de API fornecida. Retorna HTTP 401.
curl http://xxx.hello.com/test -
Chave de API inválida. Retorna HTTP 401.
curl http://xxx.hello.com/test?apikey=926d90ac-ba2e-11ec-ab68-00163e1*** -
O chamador correspondente não tem permissão de acesso. Retorna HTTP 403.
# The caller consumer2 is not in the whitelist of route-a. curl http://xxx.hello.com/test?apikey=c8c8e9ca-558e-4a2d-bb62-e700dcc***
Ative autenticação em todo o gateway
Com a configuração abaixo no nível da instância, todas as requisições exigem autenticação key-auth.
global_auth: true
consumers:
- credential: 2bda943c-ba2b-11ec-ba07-00163e1***
name: consumer1
- credential: c8c8e9ca-558e-4a2d-bb62-e700dcc***
name: consumer2
keys:
- apikey
- x-api-key
Códigos de erro
|
Código de status HTTP |
Mensagem de erro |
Motivo |
|
401 |
No API key found in request. |
A requisição não contém chave de API. |
|
401 |
Request denied by Key Auth check. Invalid API key. |
A chave de API é inválida. |
|
403 |
Request denied by Key Auth check. Unauthorized consumer. |
O chamador não tem permissão de acesso. |