Configure um paywall com Edge Function JWT
Edge Function JWT é uma função serverless da plataforma de Edge Computing da Azion para processamento e validação de tokens JWT (JSON Web Token) que pode ser empregada na construção de soluções de paywall para controle de acesso a conteúdos por meio de subscrição.
Com isso, a aplicação identifica diretamente no Edge se a pessoa que tenta acessar determinada página já foi previamente autenticada ou não, otimizando a operação e diminuindo a carga de processamento do lado da infraestrutura do cliente.
Algumas outras vantagens da Edge Function JWT:
- flexibilidade para o cliente desenvolver aplicações;
- infraestrutura de Edge Nodes distribuídos para processamento de tokens;
- possibilidade de executar regras de negócio no Edge.
Como funciona
Na implementação de Paywall com JWT, a aplicação de origem e a Function no Edge cumprem funções distintas:
Aplicação de origem: encarrega-se de especificar uma lógica para geração e expiração de um token e, também, definir a maneira como os acessos dos usuários serão controlados – por exemplo, qual o método de autenticação (OAUTH, OpenID Connect, etc.), a quantidade de acessos ou de bytes transferidos pelo cliente antes de solicitar o login e o tempo de navegação sem exigir nova autorização (expiração).
O token segue um padrão de mercado para autenticação HTTP, o esquema bearer authentication, no qual ele armazena objetos JSON com informações que permitem a autenticação da requisição, e deve ser adicionado ao header de toda solicitação que transitar pelo Edge.
Edge Function JWT: executa em cada requisição recebida a validação do token gerado pela aplicação e enviado pelo usuário. A function segue as regras de negócio definidas no token, podendo combiná-la com outros elementos no Edge para definir o comportamento a ser adotado (autorizar o acesso ou encaminhar para a aplicação, usualmente uma página de login/sign-up).
Configurando a Function JWT
Edge Function JWT está disponível na biblioteca de functions da plataforma de Edge Computing da Azion e pode ser acessada pelo Real-Time Manager (RTM), no menu Libraries.
Para execução da function, ela tem de ser instanciada no Edge Application em que se deseja trabalhar e ter seus critérios de ativação e comportamentos definidos dentro do Rules Engine conforme as estratégias já configuradas na aplicação de origem (ex.: proprietária com OAuth, OpenID etc., ou de mercado, como Auth0, Keycloak, etc.).
Criando uma instância
Caminho: Real-Time Manager > Edge Services > Edge Applications > Functions.
A partir do RTM, acesse a Edge Application que irá rodar a sua function e, dentro da aba Functions, adicione outra function, desta vez declarando um nome significativo para ela.
Parâmetros: é necessário selecionar a function de sua instância; no caso, escolha JWT. Note que o código da função aparecerá no campo Code apenas para leitura e entendimento. Na aba Args, informe a lista de pares de KIDs (key IDs) e chaves secretas utilizadas para geração da assinatura do token – vide exemplo abaixo – e salve a função. A lista de pares está definida em sua aplicação de origem.
[{
"kids": {
"4546D4AA7F62F01A833A7ABE354030E7": "D6CB2342E44EFB6DD628276F36DA2359",
"D6CB2342E44EFB6DD628276F36DA2359": "60BD8ED7A768E8BD6925BEB0A691AADB",
"60BD8ED7A768E8BD6925BEB0A691AADB": "4546D4AA7F62F01A833A7ABE354030E7"
}
}]
Exemplo de configuração dos parâmetros JSON Args.
Definindo critérios de execução (Rules Engine)
Caminho: Real-Time Manager > Edge Services > Edge Applications > Rules Engine.
As regras (ou Rule Engines) determinam o conjunto de condições que precisam ser atendidas para a execução dos Behaviors. Você pode utilizar a Default Rule ou criar uma nova regra a fim de configurar os parâmetros de validação e os comportamentos para execução de sua function pela Edge Application.
Definindo critérios de validação (criteria): escolha as variáveis, operadores de comparação e strings para construção de sua regra de negócio, como no exemplo a seguir:
- If: ${uri} starts with /news (na sequência: operador lógico, variável, operador de comparação, string)
Aqui a regra é executada se a URI acessada iniciar com a string “/news”.
Definindo comportamentos (behaviors): adicione os comportamentos que deseja executar caso as condições da regra sejam satisfeitas. Exemplo:
- Then: Run Function MyJwtFunction (na sequência: operador lógico, ação, função)
Nesse exemplo, se as condições definidas nas regras forem satisfeitas, então será executada a function MyJwtFunction
Código de erro retornado: se o token recebido for inválido, a function retornará um HTTP status code 400 ou 401, dependendo do erro encontrado.
Por fim, salve a sua Edge Application e ela já estará pronta para executar a nova function.
Não encontrou o que procurava? Abra um ticket.