2. Overview
2. Overview
Ein allgemeines Modell umfasst drei Akteure: User Agent, Push-Dienst und Anwendungsserver.
+-------+ +--------------+ +-------------+
| UA | | Push Service | | Application |
+-------+ +--------------+ | Server |
| | +-------------+
| Subscribe | |
|--------------------->| |
| Monitor | |
|<====================>| |
| | |
| Distribute Push Resource |
|-------------------------------------------->|
| | |
: : :
| | Push Message |
| Push Message |<---------------------|
|<---------------------| |
| | |
Abbildung 1: WebPush-Architektur
Zuerst erstellt der User Agent ein neues Abonnement und verteilt es an den Anwendungsserver. Dieses Abonnement ist Grundlage aller weiteren Interaktionen. Der Anwendungsserver sendet damit Nachrichten an den Push-Dienst; der User Agent überwacht eingehende Nachrichten.
Zur besseren Autorisierungskontrolle wird ein Abonnement als zwei Ressourcen modelliert:
-
subscription resource: Empfang und Löschen des Abonnements; privat für den User Agent.
-
push resource: Senden an das Abonnement; öffentlich, mit Anwendungsserver geteilt.
Pro Anwendung wird ein eindeutiges Abonnement erwartet; das Protokoll erzwingt keine Kardinalität. Mehrere Abonnements oder gemeinsame Nutzung sind möglich, mit Sicherheits- und Datenschutzfolgen.
Abonnements haben begrenzte Lebensdauer und können jederzeit beendet werden. User Agents und Anwendungsserver müssen Zustandsänderungen handhaben.
2.1. HTTP Resources
Das Protokoll nutzt HTTP-Ressourcen [RFC7230] und Link-Relationen [RFC5988]:
push service: erstellt Abonnements (Abschnitt 4); URL ist im User Agent konfiguriert.
push message subscription: Lese- und Löschzugriff; Empfang in Abschnitt 6; genau eine zugehörige push resource.
push message subscription set: Zugriff auf eine Menge von Abonnements; Empfang in 6.1; Relation urn:ietf:params:push:set.
push: Zustellungsanforderung (5); Relation urn:ietf:params:push.
push message: vom Dienst erstellte Ressource für akzeptierte Nachrichten (5); DELETE durch User Agent zur Bestätigung (6.2).
receipt subscription: Zustellbestätigungen (5.1); Relation urn:ietf:params:push:receipt.