WebPush

RFC 8030

RFC 8291

 

Il protocollo WebPush è definito dall'RFC 8030 (Consegna tramite HTTP Push) e dall'RFC 8291 (Cifratura dei messaggi).

 

Web Push è un protocollo standardizzato per la consegna di notifiche push ai browser web. Utilizza la Push API, un'API web standard che consente ai siti web di registrare e ricevere messaggi push. La Push API permette a un sito web di inviare messaggi push al browser di un utente, anche quando l'utente non sta navigando attivamente sul sito.

 

Per utilizzare Web Push, un sito web deve prima ottenere una sottoscrizione push dal browser dell'utente. La sottoscrizione è composta da un URL endpoint univoco e una chiave di crittografia. L'URL endpoint è un URL che il sito web può utilizzare per inviare messaggi push al browser dell'utente, mentre la chiave di crittografia viene usata per cifrare e decifrare i messaggi push.

 

Una volta che il sito web ha ottenuto una sottoscrizione push, può inviare messaggi push al browser dell'utente effettuando una richiesta HTTP all'URL dell'endpoint. Il messaggio push viene inviato in un formato speciale chiamato Web Push Protocol Message, che consiste in un insieme di intestazioni e un payload. Le intestazioni contengono informazioni come la chiave di crittografia e il TTL (time-to-live) del messaggio, mentre il payload contiene il contenuto effettivo del messaggio.

 

Quando il browser dell'utente riceve un messaggio push, prima decifra il messaggio utilizzando la chiave di cifratura. Poi mostra la notifica all'utente, insieme a eventuali azioni aggiuntive che l'utente può intraprendere, come ignorare la notifica o aprire il sito web.

 

Per garantire la sicurezza e la privacy dei messaggi push, Web Push utilizza la cifratura end-to-end e richiede che le sottoscrizioni push vengano ottenute tramite una connessione sicura (ad es. HTTPS). Inoltre, il protocollo fornisce meccanismi per autenticare il mittente di un messaggio push e prevenire abusi (ad es. limitando il numero di messaggi push che un sito web può inviare a un utente).

 

Componenti

Esistono 2 componenti che supportano WebPush: