ライブラリをインストールするための推奨される最も簡単な方法は、Composer を使用することです。
composer require azimolabs/apple-sign-in-php-sdk
PHPのバージョン | ライブラリのバージョン |
---|---|
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 |
バージョン管理はサーバー標準に従います。
この説明では、すでにidentityTokenが生成されていることを前提としています。トークンは 10 分間のみ有効であることに注意してください。
ID トークンを検証する最初のステップは、公開キーを生成することです。公開キーを生成するには、 exponent
とmodulus
値が必要です。どちらの情報も Apple API エンドポイントで公開されます。これらの値はアルゴリズムによって異なります。
2 番目のステップは、生成された公開キーに対して、 identityToken
が有効であるかどうかを検証することです。そうであれば、 identityToken
が不正ではないと確信できます。
3 番目のステップは、トークンの有効期限が切れていないかどうかを検証することです。さらに、 issuer
とaudience
を確認する価値があります。例を以下に示します。
リポジトリのクローンを作成したら、 composer install -o
実行して、composer の依存関係がインストールされていることを確認します。
$ 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 ' );
上記のコードをコピー&ペーストしたくない場合は、新しく生成したidentityToken
tests/E2e/Auth/AppleJwtFetchingServiceTest.php:53
に貼り付け、単純なコマンド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)
問題の修正を含むプル リクエストを開いていただければ幸いです。
phpseclib/phpseclib
バージョン3.0.7
にアップグレードします。 lcobucci/jwt
バージョン4.x
にアップグレードします。レポート: 文字列からのキーの暗黙的な変換は非推奨になりました。 #2 7.4.3
と互換性のあるものにします。 「キャッチされない JsonException: 不正な形式の UTF-8 文字」で報告される8.0.0
と互換性のあるものにする