Como configurar um paywall com a solução Azion JWT
A edge function JWT é uma soluçã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 soluçã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 solução JWT
Seção intitulada Como funciona a solução JWTEm uma implementação de paywall utilizando a soluçã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.
EdgeFunction 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.
Configurando a função JWT
Seção intitulada Configurando a função JWTA edge function JWT está disponível no Azion Marketplace e pode ser acessada através do Real-Time Manager (RTM), no Products menu, localizado no canto superior esquerdo da página inicial do RTM 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.).
Criando uma instância
Seção intitulada Criando uma instânciaPara criar uma função JWT, você pode consultar o guia sobre Como instalar a solution 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:
[{ "kids": { "4546D4AA7F62F01A833A7ABE354030E7": "D6CB2342E44EFB6DD628276F36DA2359", "D6CB2342E44EFB6DD628276F36DA2359": "60BD8ED7A768E8BD6925BEB0A691AADB", "60BD8ED7A768E8BD6925BEB0A691AADB": "4546D4AA7F62F01A833A7ABE354030E7" }}]
Definindo as regras no Rules Engine
Seção intitulada Definindo as regras no Rules EngineAs 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
Seção intitulada Definição dos criteria (critérios) de validaçãoEscolha 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)
Seção intitulada 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.
Nota: um código de erro será retornado se o token recebido for inválido. A função retornará um código de status HTTP 400 ou 401, dependendo do erro.
Por fim, salve sua edge application e a sua função estará pronta.