Tokenbaserad autentisering (HTTP/2) för APNS

Översikt

Den här artikeln beskriver hur du använder det nya APNS HTTP/2-protokollet med tokenbaserad autentisering.

De viktigaste fördelarna med att använda det nya protokollet är:

  • Tokengenereringen är relativt enkel (jämfört med certifikat)
  • Inga fler förfallodatum – du har kontroll över dina autentiseringstoken och deras återkallande
  • Nyttolaster kan nu vara upp till 4 KB
  • Synkron feedback
  • Du använder Apples senaste protokoll – certifikat använder fortfarande det binära protokollet, som är markerat för utfasning

Du kan utföra den här nya mekanismen i två steg:

  • Hämta nödvändig information från Apple Developer-kontoportalen.
  • Konfigurera meddelandehubben med den nya informationen.

Notification Hubs är nu inställt på att använda det nya autentiseringssystemet med APNS.

Observera att om du migrerade från att använda certifikatautentiseringsuppgifter för APNS skriver tokenegenskaperna över ditt certifikat i vårt system, men programmet fortsätter att ta emot meddelanden sömlöst.

Hämta autentiseringsinformation från Apple

För att aktivera tokenbaserad autentisering behöver du följande egenskaper från ditt Apple Developer-konto:

Nyckelidentifierare

Nyckelidentifieraren kan hämtas från sidan Nycklar under Certifikat, Identifierare och profiler i ditt Apple Developer-konto:

Certificates

Identifiers

Programidentifierare och programnamn

Programnamnet och identifieraren är också tillgängliga på sidan Certifikat, Identifierare och profiler i utvecklarkontot:

Certificates and IDs

Konfigurera via .NET SDK eller Azure-portalen

Du kan konfigurera hubben så att den använder tokenbaserad autentisering med vår senaste klient-SDK eller i Azure-portalen. Om du vill aktivera tokenbaserad autentisering i portalen loggar du in på Azure-portalen och går till panelen Inställningar > Apple (APNS). Välj Token från egenskapen Autentiseringsläge för att uppdatera hubben med alla relevanta tokenegenskaper.

Configure token

  • Ange de egenskaper som du hämtade från ditt Apple Developer-konto.
  • Välj programläge (produktion eller sandbox-miljö).
  • Klicka på knappen Spara för att uppdatera dina APNS-autentiseringsuppgifter.

Tokenbaserade autentiseringsuppgifter består av följande fält:

  • Nyckel-ID: Identifierare för den privata nyckel som genereras i Apple Developer-portalen, 2USFGKSKLTtill exempel .
  • Team-ID: Kallas även "Prefix" eller "Appprefix". Det här är identifieraren för organisationen i Apple Developer-portalen. till exempel S4V3D7CHJR.
  • Paket-ID: Kallas även "App-ID". Det här är paketidentifieraren för programmet. till exempel com.example.myapp. Observera att du bara kan använda en nyckel för en app. Det här värdet mappar till apns-topic HTTP-huvudet när du skickar ett meddelande och används för att rikta in sig på det specifika programmet. Du kan inte ange värdet apns-topic för explicit.
  • Token: Kallas även "Nyckel" eller "Privat nyckel". Detta hämtas från .p8-filen som genereras på Apple Developer-portalen. Nyckeln måste ha APNS aktiverat (som väljs på Apple Developer-portalen när nyckeln genereras). Värdet måste ha PEM-sidhuvud/sidfot borttaget från det när du anger det till NH-portalen/API:et.
  • Slutpunkt: Det här är en växlingsknapp på bladet Notification Hubs-portalen och ett strängfält i API:et. Giltig värden är https://api.development.push.apple.com:443/3/device och https://api.sandbox.push.apple.com:443/3/device. Notification Hubs använder det här värdet för antingen produktionsmiljön eller sandbox-miljön för att skicka meddelanden. Detta måste matcha berättigandet aps-environment i appen, annars matchar de APNS-enhetstoken som genereras inte miljön och meddelandena skickas inte.

Här är ett kodexempel som illustrerar rätt användning:

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);

Nästa steg