Tokenbasierte Authentifizierung (HTTP/2) für APNS
Übersicht
In diesem Artikel wird erläutert, wie das neue HTTP/2-Protokoll für APNS mit tokenbasierter Authentifizierung verwendet wird.
Zu den Hauptvorteilen des neuen Protokolls zählen:
- Die Tokengenerierung ist relativ einfach (im Vergleich zu Zertifikaten).
- Keine Ablaufdaten mehr – Sie steuern die Authentifizierungstoken und deren Sperrung
- Nutzlasten können jetzt bis zu 4 KB betragen
- Synchrones Feedback
- Sie verwenden das neueste Apple-Protokoll – Zertifikate verwenden weiterhin das binäre Protokolls, das demnächst veraltet sein wird
Dieser Mechanismus lässt sich in zwei Schritten ausführen:
- Abrufen der erforderlichen Informationen aus dem Apple-Entwicklerkontoportal.
- Konfigurieren Ihres Benachrichtigungshubs mit den neuen Informationen.
Notification Hubs ist jetzt für die Verwendung des neuen Authentifizierungssystems mit APNS eingerichtet.
Beachten Sie Folgendes: Wenn Sie von der Verwendung von Zertifikatanmeldeinformationen für APNS migriert sind, setzen die Tokeneigenschaften Ihr Zertifikat in unserem System außer Kraft, aber Ihre Anwendung empfängt weiterhin nahtlos Benachrichtigungen.
Abrufen von Authentifizierungsinformationen von Apple
Um die tokenbasierte Authentifizierung zu aktivieren, benötigen Sie die folgenden Eigenschaften aus Ihrem Apple-Entwicklerkonto:
Schlüsselbezeichner
Den Schlüsselbezeichner können Sie auf der Seite Keys unter Zertifikate, Bezeichner und Profile in Ihrem Apple-Entwicklerkonto abrufen.
Anwendungsbezeichner und Anwendungsname
Anwendungsname und -bezeichner sind ebenfalls auf der Seite Zertifikate, Bezeichner und Profile im Entwicklerkonto verfügbar:
Konfigurieren über das .NET SDK oder das Azure-Portal
Sie können Ihren Hub mithilfe unseres neuesten Client-SDK oder im Azure-Portal zur Verwendung der tokenbasierten Authentifizierung konfigurieren. Um die tokenbasierte Authentifizierung im Portal zu aktivieren, melden Sie sich beim Azure-Portal an, und wechseln Sie zum Bereich Einstellungen > Apple (APNS) Ihres Benachrichtigungshubs. Wählen Sie Token in der Eigenschaft Authentifizierungsmodus aus, um Ihren Hub mit allen relevanten Tokeneigenschaften zu aktualisieren.
- Geben Sie die Eigenschaften ein, die Sie in Ihrem Apple-Entwicklerkonto abgerufen haben.
- Wählen Sie den Anwendungsmodus aus (Produktion oder Sandbox).
- Klicken Sie auf die Schaltfläche Speichern, um Ihre APNS-Anmeldeinformationen zu aktualisieren.
Tokenbasierte Anmeldeinformationen bestehen aus den folgenden Feldern:
- Schlüssel-ID: Der Bezeichner des privaten Schlüssels, der im Apple-Entwicklerportal generiert wurde, beispielsweise
2USFGKSKLT
. - Team-ID: Wird auch als „Präfix“ oder „App-Präfix“ bezeichnet. Dies ist der Bezeichner für die Organisation im Apple Developer-Portal, beispielsweise
S4V3D7CHJR
. - Paket-ID: Wird auch als „App-ID“ bezeichnet. Dies ist der Bündelbezeichner für die Anwendung, beispielsweise
com.example.myapp
. Beachten Sie, dass Sie nur einen Schlüssel für eine App verwenden können. Dieser Wert wird demapns-topic
-HTTP-Header zugeordnet, wenn eine Benachrichtigung gesendet wird, und wird verwendet, um auf die jeweilige Anwendung abzuzielen. Sie können den Wert vonapns-topic
nicht explizit festlegen. - Token: Wird auch als „Schlüssel“ oder „Privater Schlüssel“ bezeichnet. Dieser wird aus der im Apple Developer-Portal generierten P8-Datei ermittelt. Für den Schlüssel muss APNS aktiviert sein (Dies wird beim Generieren des Schlüssels im Apple-Entwicklerportal ausgewählt). Bei dem Wert müssen die PEM-Kopf-/Fußzeile entfernt werden, wenn Sie ihn für das NH-Portal/die API bereitstellen.
- Endpunkt: Dies ist eine Umschaltfläche auf dem Blatt „Notification Hubs-Portal“ und ein Zeichenfolgenfeld in der API. Gültige Werte sind
https://api.development.push.apple.com:443/3/device
undhttps://api.sandbox.push.apple.com:443/3/device
. Notification Hubs verwendet diesen Wert entweder für die Produktions- oder für die Sandbox-Umgebung zum Senden von Benachrichtigungen. Dies muss deraps-environment
-Berechtigung in der App entsprechen. Andernfalls stimmen die generierten APNS-Gerätetoken nicht mit der Umgebung überein, und die Benachrichtigungen können nicht gesendet werden.
Das folgende Codebeispiel veranschaulicht die richtige Verwendung:
NamespaceManager nm = NamespaceManager.CreateFromConnectionString(_endpoint);
string token = "YOUR PRIVATE KEY HERE";
string keyId = "YOUR KEY ID HERE";
string appName = "YOUR APP NAME HERE";
string appId = "YOUR APP ID HERE";
NotificationHubDescription desc = new NotificationHubDescription("PATH TO YOUR HUB");
desc.ApnsCredential = new ApnsCredential(token, keyId, appId, appName);
desc.ApnsCredential.Endpoint = @"https://api.development.push.apple.com:443/3/device";
nm.UpdateNotificationHubAsync(desc);