Le moyen recommandé et le plus simple d’installer la bibliothèque consiste à utiliser Composer.
composer require azimolabs/apple-sign-in-php-sdk
Version PHP | Version bibliothèque |
---|---|
5.x | NOT SUPPORTED |
> 7.0 <= 7.3 | 1.4.x |
>= 7.4 < 8.0 | 1.5.x |
>= 8.0 & ^7.4 | 2.0.x |
>= 8.1 | 3.0.x |
La gestion des versions suit la norme Semver.
Cette description suppose que vous avez déjà généré IdentityToken . N'oubliez pas que le jeton n'est valable QUE pendant 10 minutes.
La première étape pour vérifier le jeton d'identité consiste à générer une clé publique. Pour générer la clé publique, des valeurs exponent
et modulus
sont nécessaires. Les deux informations sont exposées dans le point de terminaison de l’API Apple. Ces valeurs diffèrent selon l'algorithme.
La deuxième étape consiste à vérifier si identityToken
fourni est valide par rapport à la clé publique générée. Si tel est le cas, nous sommes sûrs que identityToken
n'a pas été mal formé.
La troisième étape est la validation si le jeton n'est pas expiré. De plus, il vaut la peine de vérifier issuer
et audience
, des exemples sont présentés ci-dessous.
Une fois que vous avez cloné le référentiel, assurez-vous que les dépendances du composer sont installées en exécutant composer install -o
.
$ appleJwtFetchingService = new Auth Service AppleJwtFetchingService (
new Auth Jwt JwtParser ( new Lcobucci JWT Token Parser ( new Lcobucci JWT Encoding JoseEncoder ())),
new Auth Jwt JwtVerifier (
new Api AppleApiClient (
new GuzzleHttp Client (
[
' base_uri ' => ' https://appleid.apple.com ' ,
' timeout ' => 5 ,
' connect_timeout ' => 5 ,
]
),
new Api Factory ResponseFactory ()
),
new Lcobucci JWT Validation Validator (),
new Lcobucci JWT Signer Rsa Sha256 ()
),
new Auth Jwt JwtValidator (
new Lcobucci JWT Validation Validator (),
[
new Lcobucci JWT Validation Constraint IssuedBy ( ' https://appleid.apple.com ' ),
new Lcobucci JWT Validation Constraint PermittedFor ( ' com.c.azimo.stage ' ),
]
),
new Auth Factory AppleJwtStructFactory ()
);
$ appleJwtFetchingService -> getJwtPayload ( ' your.identity.token ' );
Si vous ne souhaitez pas copier-coller le code ci-dessus, vous pouvez coller identityToken
fraîchement généré dans tests/E2e/Auth/AppleJwtFetchingServiceTest.php:53
et exécuter des tests avec la simple commande php vendor/bin/phpunit tests/E2e
.
$ php vendor/bin/phpunit tests/E2e
PHPUnit 9.2.5 by Sebastian Bergmann and contributors.
Random seed: 1594414420
. 1 / 1 (100%)
Time: 00:00.962, Memory: 8.00 MB
OK (1 test, 1 assertion)
Nous vous invitons à ouvrir une pull request avec un correctif pour tout problème :
phpseclib/phpseclib
vers la version 3.0.7
lcobucci/jwt
vers la version 4.x
Signalé dans : La conversion implicite des clés à partir des chaînes est obsolète. #2 7.4.3
. Signalé dans Uncaught JsonException : caractères UTF-8 mal formés 8.0.0