WebPush

RFC 8030

RFC 8291

 

O protocolo WebPush é definido pela RFC 8030 (Delivery using HTTP Push) e pela RFC 8291 (Message Encryption).

 

O Web Push é um protocolo padronizado para entregar notificações push a navegadores web. Ele utiliza a Push API, que é uma API web padrão que permite que sites se registrem e recebam mensagens de push. A Push API permite que um site envie mensagens de push ao navegador de um usuário, mesmo quando o usuário não está navegando ativamente no site.

 

Para utilizar o Web Push, um site primeiro precisa obter uma push subscription do navegador do usuário. A subscription consiste em uma endpoint URL única e uma chave de criptografia. A endpoint URL é uma URL que o site pode utilizar para enviar mensagens push ao navegador do usuário, e a chave de criptografia é utilizada para criptografar e descriptografar as mensagens push.

 

Uma vez que o site tenha obtido uma assinatura de push, ele pode enviar mensagens de push para o navegador do usuário fazendo uma requisição HTTP para a URL do endpoint. A mensagem de push é enviada em um formato especial chamado Web Push Protocol Message, que consiste em um conjunto de cabeçalhos e um payload. Os cabeçalhos contêm informações como a chave de criptografia e o TTL (time-to-live) da mensagem, enquanto o payload contém o conteúdo real da mensagem.

 

Quando o navegador do usuário recebe uma mensagem push, ele primeiro descriptografa a mensagem usando a chave de criptografia. Em seguida, ele exibe a notificação ao usuário, juntamente com quaisquer ações adicionais que o usuário pode realizar, como dispensar a notificação ou abrir o site.

 

Para garantir a segurança e a privacidade das mensagens push, o Web Push utiliza criptografia de ponta a ponta e exige que as inscrições push sejam obtidas por uma conexão segura (por exemplo, HTTPS). Adicionalmente, o protocolo fornece mecanismos para autenticar o remetente de uma mensagem push e prevenir abusos (por exemplo, limitando o número de mensagens push que um site pode enviar a um usuário).

 

Componentes

Existem 2 componentes que suportam WebPush: