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:
Programidentifierare och programnamn
Programnamnet och identifieraren är också tillgängliga på sidan Certifikat, Identifierare och profiler i utvecklarkontot.
Konfigurera via .NET SDK eller Azure Portal
Du kan konfigurera hubben så att den använder tokenbaserad autentisering med vår senaste klient-SDK eller i Azure Portal. Om du vill aktivera tokenbaserad autentisering i portalen loggar du in på Azure Portal och går till apns-panelen Inställningar > för meddelandehubben. Välj Token från egenskapen Autentiseringsläge för att uppdatera hubben med alla relevanta tokenegenskaper.
- 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,
2USFGKSKLT
till 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 tillapns-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ärdetapns-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
ochhttps://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ättigandetaps-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);