Apple Push Notifications - tokengebaseerde verbindingen met APNs (deel 3/4)

· Functies

In deze blog laat ik zien hoe je de sgcWebSockets JWT-client configureert om geauthenticeerde HTTP/2-requests naar Apple Push Notification-servers te versturen.

Beveilig je communicatie met de Apple Push Notification-service (APNs) met behulp van stateless authentication-tokens.

Eerst moet je een Encryption Key en een Key ID verkrijgen via je Apple Developer-account. Na succesvolle registratie ontvang je een 10-tekens lange string met de Key ID en een Authenticatie Token signing key met de bestandsextensie .p8.

Je moet de sgcWebSockets JWT-client gebruiken om een JWT te genereren met ES256 als algoritme. Het token moet niet voor elke HTTP/2-request worden gegenereerd; het mag niet eerder dan 20 minuten en niet later dan 60 minuten worden vernieuwd.

JWT-client configureren 

Configureer de JWT-client met de volgende waarden:

Bij gebruik van tokengebaseerde verbindingen moet je de apns-topic meesturen met de waarde van het bundle-id/app-id van je app (voorbeeld: 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');