Como configurar um paywall com a integração JWT da Azion
A edge function JWT é uma integração serverless do Azion Marketplace para processar e validar tokens JWT (JSON Web Token). Ela pode ser usada para criar soluções de paywall que permitam controlar o acesso a conteúdo por assinatura.
Com esse sistema, a aplicação otimiza as operações e reduz a carga de processamento na infraestrutura do cliente, identificando diretamente no edge se a pessoa que tenta acessar uma determinada página está autorizada ou não.
Alguns outros benefícios da integração JWT são:
- Fornece flexibilidade de desenvolvimento de aplicativos para o cliente.
- Processa os tokens em uma infraestrutura distribuída de edge nodes.
- Proporciona capacidade de execução de regras de negócios no edge.
Como funciona a integração JWT
Em uma implementação de paywall utilizando a integração JWT, a aplicação de origem e a função no edge têm papéis diferentes:
Aplicação de origem: determina a lógica em torno de como o token é gerado e quando ele irá expirar. Também determina como o acesso do usuário é controlado, como qual método de autenticação é usado (OAUTH, OpenID Connect, etc.), o número de tentativas de acesso ou bytes que o cliente pode usar antes de ser solicitado a fazer login ou a quantidade de tempo que o cliente pode navegar sem autorização adicional (expiração).
O token usa um padrão da indústria para autenticação HTTP, o Bearer Authentication Scheme (Esquema de Autenticação de Portador), que armazena objetos JSON
com informações de autenticação que devem ser adicionadas ao cabeçalho de cada solicitação.
Edge Function JWT: valida o token gerado pelo aplicativo para cada solicitação recebida e enviada pelo usuário. A função segue as regras de negócios definidas no token, e pode combiná-las com outros elementos no edge para definir qual comportamento deve ser aplicado, permitindo acesso ou redirecionamento para o aplicativo, geralmente uma página de logon/login.
Configuração da função JWT
A edge function JWT está disponível no Marketplace da Azion e pode ser acessada através do Azion Console, no Products menu, localizado no canto superior esquerdo da página inicial do Console e indicado pelas três linhas horizontais.
Para ser executada, a função deve ser instanciada em uma edge application. Seus critérios de ativação e comportamento também devem ser definidos dentro do Rules Engine, de acordo com a abordagem já configurada no aplicativo de origem (por exemplo, versões proprietárias do OAuth, OpenID, etc., ou versões de mercado, como Auth0, Keycloak, etc.).
Criação de uma instância
Para criar uma função JWT, você pode consultar o guia sobre Como instalar a integração JWT através do Marketplace da Azion.
Parâmetros: uma vez que você selecionou a função JWT em sua edge application, um formulário com o código-fonte aparecerá no campo Code, que é apenas para fins informativos e você não pode alterá-lo. Na aba Args, você passará a lista de pares de KIDs (Key IDs) e as chaves secretas usadas para gerar a assinatura do token e salvar a função.
A lista de pares é definida em sua aplicação de origem, como no exemplo abaixo:
Definição das regras no Rules Engine
As regras do Rules Engine determinarão o conjunto de condições que precisam ser atendidas para que os behaviors (comportamentos) sejam executados. Você pode usar a Default Rule ou criar uma nova regra.
Definição dos criteria (critérios) de validação
Escolha as variáveis, os operadores de comparação e as strings para criar sua regra de negócio, como no exemplo a seguir:
If: ${uri} starts with /news
Lógica: operador lógico, variável, operador de comparação, string.
Aqui, a regra é executada se uma URL começar com a string /news
.
Definição dos behaviors (comportamentos)
Adicione os behaviors (comportamentos) que você deseja que sejam realizados quando as condições da regra forem atendidas. Exemplo:
Then Run Function
e escolha JWT, ou qualquer outro nome que você deu para a sua função.
Lógica: operador lógico, ação, função.
Neste exemplo, se as condições definidas nas regras forem satisfeitas, a função JWT será executada.
Por fim, salve sua edge application e a sua função estará pronta.