Apple Push Notifications - Connessioni ad APNs basate su token (Parte 3/4)

· Funzionalità

In questo articolo mostrerò come configurare il client JWT di sgcWebSockets per inviare richieste HTTP/2 autenticate ai server Apple Push Notification.

Proteggi le tue comunicazioni con il servizio Apple Push Notification (APNs) usando token di autenticazione stateless.

Per prima cosa devi ottenere una Encryption Key e un Key ID dal tuo Apple Developer Account. Dopo una registrazione andata a buon fine otterrai una stringa di 10 caratteri con il Key ID e una chiave di firma del token di autenticazione come file con estensione .p8.

Devi usare il client JWT di sgcWebSockets per generare un JWT usando ES256 come algoritmo. Il token non deve essere generato per ogni richiesta HTTP/2: non deve essere aggiornato prima di 20 minuti né dopo 60 minuti.

Configurare il client JWT 

Configura il client JWT con i seguenti valori:

Le connessioni basate su token richiedono di inviare l'header apns-topic con il valore del bundle ID/app id della tua app (esempio: com.example.application).

oHTTP := TsgcHTTP2Client.Create(nil);
oHTTP.TLSOptions.IOHandler := iohOpenSSL;
oJWT := TsgcHTTP_JWT_Client.Create(nil);
oHTTP.Authentication.Token.JWT := oJWT;
oJWT.JWTOptions.Header.alg := jwtES256;
oJWT.JWTOptions.Header.kid := 'apple key id';
oJWT.JWTOptions.Payload.iss := 'issuer';
oJWT.JWTOptions.Payload.iat := StrToInt64(GetDateTimeUnix(Now, False));
oJWT.JWTOptions.Algorithms.ES.PrivateKey.LoadFromFile('AuthKey_**.p8');
oJWT.JWTOptions.RefreshTokenAfter := 60*40;
oHTTP.Request.CustomHeaders.Clear;
oHTTP.Request.CustomHeaders.Add('apns-topic: com.example.application');