Apple Push Notifications - connexions à APNs basées sur jetons (partie 3/4)

· Fonctionnalités

Dans cet article, je vais montrer comment configurer le client JWT de sgcWebSockets pour envoyer des requêtes HTTP/2 authentifiées aux serveurs Apple Push Notification.

Sécurise tes communications avec le service Apple Push Notification (APNs) en utilisant des jetons d'authentification sans état.

Tu dois d'abord obtenir une Encryption Key et un Key ID depuis ton Apple Developer Account. Après une inscription réussie, tu obtiendras une chaîne de 10 caractères avec le Key ID et une clé de signature de jeton d'authentification au format .p8.

Tu dois utiliser le client JWT de sgcWebSockets pour générer un JWT en utilisant ES256 comme algorithme. Le jeton ne doit pas être généré pour chaque requête HTTP/2 ; il ne doit pas être rafraîchi avant 20 minutes ni après 60 minutes.

Configurer le client JWT 

Configure le client JWT avec les valeurs suivantes :

Les connexions basées sur jetons exigent d'envoyer l'en-tête apns-topic avec la valeur du bundle ID/app id de ton application (exemple : 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');