TL;DR — Cloudflare Zero Trust Service Token
Quem nunca precisou fazer aplicações restritas ou integrações entre serviços de forma segura? Cloudflare Zero Trust fornece diversas soluções para isso, mas hoje iremos dizer especificamente entre aplicações.
Configurei uma página utilizando GitHub Pages com meu domínio e que retorna apenas um complexo "Hello World". (repositório)
Nada de novo por ai, agora na vá em sua Dashboard da conta Cloudflare, não é Dashboard do Domínio. Clique em ZeroTrust. Selecione sua conta e finalize as configurações necessárias. Precisa configurar um meio de pagamento, mas o plano é gratuito.
Próximo passo é gerar um Service Token para utilizar na autorização das chamadas a aplicação. No menu lateral esquerdo, acesse Access > Service Token e depois clique em Create Service Token.
Após clicar em Generate Token, ele irá gerar duas informações que você irá utilizar para executar as chamadas da sua "aplicação".
Agora iremos criar nossa primeira aplicação em Cloudflare Zero Trust Access. No menu lateral esquerdo, acesse Access > Applications e depois clique em Get Started. Se você já tiver criado alguma aplicação, você terá um botão chamado Add an Application. Na próxima tela selecione a opção Self-hosted.
Preencha com o nome da aplicação e com o domínio que registramos lá no começo. Desça até o final da página e clique em Next.
Nesta página iremos criar uma politica de segurança para aquele dominio aceitar apenas requisições que possuem Service Token. Dê um nome para política, em Action selecione a opção Service Auth e marque a opção 401 Response.
Logo abaixo você irá encontrar uma seção de Configure Rules. Lá iremos configurar quais Service Tokens você irá autorizar a acessar. Você também pode configurar para permitir todos Service Tokens configurado em sua conta. Aqui você pode criar regras mais restritas, como IP Range, País e outras opções.
Feito isso, no final da página você pode clicando em Next até finalizar a criação da aplicação.
Pronto, aplicação configurada. Se você tentar acessar pelo navegador, você receberá um Forbidden, pois você não está passando o Service Token no cabeçalho da requisição.
XABLAU! Está funcionando, agora se você tentar executar a chamada pelo Postman ou Insomnia com os cabeçalhos que o Service Token gerou, você obterá sucesso em sua requisição.
Parabéns! Agora você tem uma página estática com restrição de acesso sem backend 🤦♂️.