Как выбрать действительные ключи из набора ключей JWK для проверки токена Apple? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь проверить Apple identityToken с помощью API. Я использую библиотеку firebase/php-jwt.

Я выполнил приведенный ниже код.

<code>$access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
$auth_keys = file_get_contents('https://appleid.apple.com/auth/keys');

$public_keys = JWK::parseKeySet(json_decode($auth_keys, true));
$keys = array_keys($public_keys);

$decoded = JWT::decode($access_token, $public_keys[$keys[0]], ['RS256']);
$decoded_array = (array) $decoded;

echo '<pre>' . print_r($decoded_array, true) . '
';

Когда я запускаю код в первый раз, он работает успешно. но во второй раз возвращается «Ошибка проверки подписи». поэтому я просто изменил с $public_keys[$keys[0]] на $public_keys[$keys[1]], так что это работает. но если я пытаюсь войти снова, он не работает.

Есть какие-либо проблемы с выбором ключа? Я не знаю, как выбрать это. Я перепробовал много поисков, но не нашел правильного решения, поэтому надеюсь получить помощь здесь.

Заранее спасибо

1 Ответ

0 голосов
/ 17 апреля 2020
$access_token = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
list($headb64, $bodyb64, $cryptob64) = explode('.', $access_token);
$header = JWT::jsonDecode(JWT::urlsafeB64Decode($headb64));

$kid = $header->kid;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...