Autenticazione basata su token (HTTP/2) per APNS

Panoramica

Questo articolo illustra come usare il nuovo protocollo HTTP/2 APNS con l'autenticazione basata su token.

Ecco i vantaggi principali dell'uso del nuovo protocollo:

  • La generazione di token è relativamente semplice (rispetto ai certificati)
  • Non sono previste scadenze: l'utente ha il controllo completo dei token di autenticazione e della rispettiva revoca.
  • Sono consentiti payload fino a 4 KB.
  • Commenti e suggerimenti sincroni
  • Si usa il protocollo più recente di Apple: i certificati usano ancora il protocollo binario, contrassegnato per la deprecazione

L'uso di questo nuovo meccanismo può essere eseguito in due passaggi:

  • Ottenere le informazioni necessarie dal portale dell'account Apple Developer.
  • Configurare l'hub di notifica con le nuove informazioni.

Hub di notifica è ora impostato per l'uso del nuovo sistema di autenticazione con APNS.

Si noti che se è stata eseguita la migrazione dall'uso delle credenziali del certificato per APNS, le proprietà del token sovrascrivono il certificato nel sistema, ma l'applicazione continua a ricevere notifiche senza problemi.

Recupero delle informazioni di autenticazione da Apple

Per abilitare l'autenticazione basata su token, sono necessarie le proprietà seguenti dall'account Apple Developer:

Identificatore di chiave

L'identificatore di chiave può essere ottenuto dalla pagina Chiavi in Certificati, Identificatori e profili nell'account Apple Developer:

Certificates

Identifiers

Identificatore dell'applicazione e nome dell'applicazione

Il nome e l'identificatore dell'applicazione sono disponibili anche nella pagina Certificati, Identificatori e profili nell'account sviluppatore:

Certificates and IDs

Configurare tramite .NET SDK o il portale di Azure

È possibile configurare l'hub per usare l'autenticazione basata su token usando l'SDK client più recente o nel portale di Azure. Per abilitare l'autenticazione basata su token nel portale, accedere al portale di Azure e passare al pannello Impostazioni > Apple (APNS) dell'hub di notifica. Selezionare Token dalla proprietà Modalità di autenticazione per aggiornare l'hub con tutte le proprietà del token pertinenti.

Configure token

  • Immettere le proprietà recuperate dall'account Apple Developer.
  • Scegliere la modalità applicazione (Produzione o Sandbox).
  • Fare clic sul pulsante Salva per aggiornare le credenziali APNS.

Le credenziali basate su token sono costituite dai campi seguenti:

  • ID chiave: identificatore della chiave privata generata nel portale apple developer, ad esempio 2USFGKSKLT.
  • ID team: chiamato anche "Prefisso" o "Prefisso app". Questo è l'identificatore per l'organizzazione nel portale Apple Developer; ad esempio . S4V3D7CHJR
  • ID bundle: denominato anche "ID app". Questo è l'identificatore del bundle per l'applicazione; ad esempio . com.example.myapp Si noti che è possibile usare una sola chiave per un'app. Questo valore esegue il mapping all'intestazione apns-topic HTTP quando si invia una notifica e viene usato per specificare come destinazione l'applicazione specifica. Non è possibile impostare il valore di apns-topic in modo esplicito.
  • Token: detto anche "Chiave" o "Chiave privata". Questo risultato viene ottenuto dal file con estensione p8 generato nel portale apple developer. La chiave deve avere APNS abilitato (selezionato nel portale apple developer durante la generazione della chiave). Il valore deve avere l'intestazione/piè di pagina PEM rimosso da esso quando lo si fornisce al portale NH/API.
  • Endpoint: si tratta di un interruttore nel pannello del portale di Hub di notifica e di un campo stringa nell'API. I valori validi sono https://api.development.push.apple.com:443/3/device o https://api.sandbox.push.apple.com:443/3/device. Hub di notifica usa questo valore per l'ambiente di produzione o sandbox per l'invio di notifiche. Deve corrispondere al aps-environment diritto nell'app, altrimenti i token del dispositivo APNS generati non corrispondono all'ambiente e le notifiche non vengono inviate.

Ecco un esempio di codice che illustra l'utilizzo corretto:

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

Passaggi successivi