Instale a integração JWT
Instale JWT a partir de Azion Marketplace e execute-a em um firewall para validar JSON Web Tokens antes que as requisições cheguem à sua infraestrutura.
Você instala a integração JWT a partir de Azion Marketplace e a executa em um firewall, pelo Azion Console. Tokens de acesso controlam o acesso a recursos online, como APIs e arquivos de mídia, e os JSON Web Tokens (JWTs) simplificam esse controle, embora um JWT possa ser maior que um ID de sessão e afetar a velocidade da rede. A integração valida cada token no firewall, antes que a requisição chegue à sua infraestrutura, sem uma chamada a um servidor autenticador. Você concede e revoga privilégios com KIDs e secrets, e define datas de expiração.
Cinco objetos precisam existir antes que uma requisição seja validada: a função instalada, um firewall com o módulo Functions, uma instância de função com os argumentos, uma regra do Rules Engine com o behavior Run Function e um deployment de workload vinculado ao firewall. Cada seção abaixo cria um deles.
Pré-requisitos
- Uma conta Azion. Para entrar, consulte Como acessar o Azion Console.
- Uma aplicação servida por um workload, cujo deployment você vincula ao firewall na última seção.
- Azion CLI instalada e autorizada, para a última seção.
- Ativar um produto ou um módulo pode gerar custos de uso. Para mais informações, consulte Preços.
Instale a integração
A função é instalada uma vez por conta. Para instalá-la:
Acesse Azion Console > Marketplace.
Digite JWT no campo Search on Marketplace e selecione o card da integração. Navegar pelos cards e pelas categorias leva à mesma página.
O card exibe Successfully installed! e Latest version installed!, e a função aparece na lista Function do drawer Create Instance.
Crie o firewall
O firewall é onde a função é instanciada e onde fica a regra que a executa. Para criar um:
Acesse Azion Console > Firewalls e crie um firewall.
Na seção General, insira um Name. Por exemplo: jwt-firewall.
Na seção Modules, ative o switch Functions.
O firewall exibe a aba Functions Instances enquanto o módulo Functions estiver ativo. Para usar um firewall existente, ative o módulo Functions dele e salve-o. Para cada configuração deste formulário, consulte Defina as configurações principais de um firewall.
Crie a instância de função
A instância guarda os KIDs e os secrets que a função aceita. Para criá-la:
Em Firewalls, selecione seu firewall e, em seguida, a aba Functions Instances.
Um firewall sem instâncias exibe a mesma ação como Function Instance. O drawer Create Instance é aberto.
Em Name, insira um nome. Por exemplo: jwt.
Em Function, selecione a função JWT. A lista contém apenas as funções que executam em um firewall.
Em Arguments, o editor vem preenchido com os argumentos padrão da integração em JSON. Insira seus KIDs, como a próxima seção descreve.
A instância aparece na aba Functions Instances.
Argumentos
O editor carrega um exemplo de KIDs, como o abaixo:
Crie a regra
A instância não valida nada até que uma regra a execute. Uma regra do Rules Engine para Firewall seleciona as requisições que chegam à instância, por meio do behavior Run Function. Para criar a regra:
Em Firewalls, selecione seu firewall e, em seguida, a aba Rules Engine.
Em Name, insira um nome. Por exemplo: Run JWT.
Na seção Criteria, selecione os domínios que executam a integração. Por exemplo: if Host matches yourdomain.com.
Na seção Behaviors, selecione Run Function e, em seguida, selecione a instância pelo nome que você deu a ela.
O firewall executa a instância em toda requisição ao domínio do critério.
Vincule o firewall ao workload
O vínculo fica no deployment do workload. Acesse Azion Console > Workloads, abra o workload e indique o seu firewall no campo Firewall de Deployment Settings. Configurações de workload lista todos os campos que um deployment guarda.
As requisições ao domínio do workload chegam ao firewall, e a regra executa a instância JWT em cada uma delas.
Execute a instância em um caminho de API
Uma API verifica o token no caminho com que toda rota da API começa, então uma requisição sem um token válido é recusada antes de chegar à origem da API. O token viaja no header Authorization da requisição, no esquema Bearer. O exemplo instancia a função como api-jwt, com os pares de key ID e secret key com que o emissor dos seus tokens assina, e a executa em /v1/ de api.example.com. Substitua cada valor pelo seu.
Para instanciar a função JWT:
Acesse Azion Console > Firewalls, selecione o firewall e vá para a aba Functions Instances.
Insira api-jwt.
Na aba Arguments, substitua o exemplo pelos seus pares, cada key ID mapeado para a sua secret key:
Para executá-la nos caminhos da API:
Insira api - check token.
Na seção Criteria, selecione Request Uri, starts with e /v1/.
Na seção Behaviors, selecione Run Function e depois api-jwt.
Uma requisição a /v1/ com um token inválido recebe 400 ou 401, dependendo do erro. Uma rota que a sua API serve sem token precisa do seu próprio caminho fora de /v1/, ou de um critério que a exclua desta regra.
Para confirmar a verificação, envie uma requisição sem header Authorization:
O comando imprime 400 ou 401. A mesma requisição com um header Authorization: Bearer <token> válido chega à API.
O caso de uso Proteger APIs públicas contra abuso usa os valores deste exemplo.
Estas verificações confirmam o caso de uso Proteger APIs públicas contra abuso.