Mercure-Hub: Autenticação de subscritores

Esta documentação faz parte do guia Introdução. Consulte o guia completo aqui: Como começar com Mercure-hub.

👋 Bem-vindo à documentação da Stackhero!

A Stackhero oferece uma solução Mercure-Hub cloud pronta a usar que proporciona uma série de benefícios, incluindo:

  • Pedidos e tamanhos de mensagens ilimitados.
  • Nome de domínio personalizável seguro com HTTPS (por exemplo, https://real-time.sua-empresa.com).
  • Atualizações fáceis com apenas um clique.
  • Desempenho ótimo e segurança robusta alimentados por uma VM privada e dedicada.
  • Disponível na 🇪🇺 Europa e 🇺🇸 EUA.

Poupe tempo e simplifique a sua vida: são necessários apenas 5 minutos para experimentar a solução Mercure-Hub cloud hosting da Stackhero!

Nos exemplos anteriores, os subscritores não estavam autenticados e precisava de permitir "subscritores anónimos" no painel de controlo do Stackhero.

Para autenticar subscritores, gera um JWS (JSON Web Signature) usando a 'Subscriber JWT key' definida no painel de controlo do Stackhero. O JWS é então enviado usando cookies do navegador ou o cabeçalho authorization.

Dado que a API Server-Sent Events não suporta definições de cabeçalhos personalizados, os cookies devem ser usados. No entanto, usar cookies implica que o seu servidor Mercure-hub e o cliente precisam de partilhar o mesmo domínio (ou subdomínio).

Se desejar usar SSE entre diferentes domínios, considere um polyfill EventSource que permita definições de cabeçalhos. Uma opção está disponível em https://github.com/Yaffle/EventSource.

Primeiro, gere um JWS para o seu cliente no seu back end. Um exemplo está disponível em backend/subscriberJwsGenerator.js. Basta inserir o seu JWT de subscritor e executar o script usando node subscriberJwsGenerator.js.

Depois, no front end, no ficheiro frontend/subscriberWithAuthorization.html, preencha o seu endpoint e o JWS gerado. Abra o ficheiro no seu navegador e o Mercure-hub funcionará agora com autenticação!

Não se esqueça de desmarcar "Permitir subscritores anónimos" no painel de controlo do Stackhero!