Cloudfront interrompendo a autenticação com JSON Web Token

Cloudfront interrompendo a autenticação com JSON Web Token

Versão resumida: meu token jwt não sobrevive a uma atualização ao apontar para o domínio por trás do Cloudfront.

Não tenho certeza se é melhor postar aqui ou no stackoverflow, mas como acho que isolei o problema no AWS Cloudfront, pensei em começar aqui.


Minha configuração:

  • As configurações de DNS do Route 53 apontam para distribuição do Cloudfront
  • 1 O comportamento do Cloudfront pega o tráfego api/* e o envia para a instância ELB EC2 que hospeda o nó/aplicativo expresso
  • 1 O comportamento do Cloudfront pega o tráfego padrão e o envia para o bucket s3 onde ficam os arquivos do aplicativo de página única Vue
  • O aplicativo Node/express está usando Passport.js para autenticação com estratégia JWT
    • Pé de Feijão Elástico

No meu local, tudo é perfeito. Quando executo meu site de teste e visito minha página de perfil, todos os dados do usuário são preenchidos nos campos apropriados. Quando atualizo a página, algo acontece com o token JWT e todos os dados do usuário são perdidos. Isso também está acontecendo em outras páginas por trás da autenticação.

Em vez de apontar minhas chamadas de API para o teste (que fica atrás do Cloudfront), tentei apontar minha API diretamente para minha instância EC2 e tudo funcionou perfeitamente.

Então, com o problema isolado do Cloudfront, o que preciso fazer (preciso encaminhar determinados cabeçalhos) para que o token JWT seja passado com êxito todas as vezes?

Responder1

Se você estiver enviando seu JWT em um cabeçalho, então sua suposição estava correta, você deve informar ao CloudFront para encaminhar o cabeçalho para a origem. Isso pode ser conseguido alterando Cache Based on Selected Request Headersa opção no comportamento do seu cache para um destes valores:

  • Todos. Isto encaminhará todos os cabeçalhos para a origem;
  • Lista branca. Em seguida, você pode adicionar o nome do cabeçalho usado para enviar o JWT (o mais comum é Autorização).

Esteja ciente de que esta opção possui duas funcionalidades:

  1. para encaminhar cabeçalhos específicos/todos os cabeçalhos para sua origem
  2. para armazenar objetos em cache com base nesses cabeçalhos.

Certifique-se de entender como isso pode afetar o comportamento do seu cache. Você pode ler mais sobre isso emArmazenamento em cache de conteúdo com base em cabeçalhos de solicitação

Existe outra opção que você pode configurar no comportamento do seu cache que quase sempre uso: Object Caching. Você pode definir o cache de objetos para Use Origin Cache Headersque seu aplicativo possa controlar o cache de resposta. Esta configuração pode estar disponível ou não com base na sua origem (S3/ALB/EC2) e/ou no seu Cache Based on Selected Request Headersvalor.

Espero que isso ajude.

informação relacionada