Ошибка openssl_verify () при декодировании пользовательского токена firebase с использованием библиотеки php-jwt

Я сгенерировал токен Firebase, используя PHP-JWT библиотека для настраиваемой аутентификации в Firebase, как предложено Вот.

Я пытался декодировать сгенерированный токен, используя раскодировать Функция той же библиотеки.

Вот мой код

Я определил закрытый ключ в моем файле конфигурации, используя следующую строку.
define("FIREBASE_PRIVATE_KEY","-----BEGIN PRIVATE KEY-----\nMY_VERY_VERY_LONG_KEY\n-----END PRIVATE KEY-----\n");

Вот код для декодирования токена.

JWT::decode($token, FIREBASE_PRIVATE_KEY, array('RS256'));

Этот код выдает следующее исключение.

openssl_verify(): supplied key param cannot be coerced into a public key

Когда я использую HS256 как для декодирования, так и для кодирования все работает отлично.
Но я должен использовать RS256 так как, Пользовательский токен Firebase должен быть подписан только с RS256.

Кто-нибудь может предложить решение этой проблемы?

0

Решение

Отказ от ответственности: не проверено, основываясь на том, что я знаю (на данный момент).

openssl_verify принимает открытый ключ как параметр, согласно документации.
Вы поставляете закрытый ключ.

Я бы попытался извлечь открытый ключ из закрытого ключа и использовать его в JWT::decode метод.

Как извлечь публику из частного? Довольно легко:

define("FIREBASE_PRIVATE_KEY","-----BEGIN PRIVATE KEY-----\nMY_VERY_VERY_LONG_KEY\n-----END PRIVATE KEY-----\n");

$private = openssl_pkey_get_private(FIREBASE_PRIVATE_KEY);
$details = openssl_pkey_get_details($private);

// Here's your public key, it's presented as a string, not a resource
$public = $details['key'];
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]