@karpo518

Как на сервере проверить подлинность публичного ключа VAPID?

Скрипт js на стороне клиента хранит VAPID public key в виде строки, но отправляет его на сервере, пропустив через функцию urlBase64ToUint8Array
Функция urlBase64ToUint8Array
function urlBase64ToUint8Array(base64String) {
    const padding = '='.repeat((4 - (base64String.length % 4)) % 4);
    const base64 = (base64String + padding).replace(/\-/g, '+').replace(/_/g, '/');

    const rawData = window.atob(base64);
    const outputArray = new Uint8Array(rawData.length);

    for (let i = 0; i < rawData.length; ++i) {
      outputArray[i] = rawData.charCodeAt(i);
    }
    return outputArray;
  }

Непонятно, как сопоставить на сервере ключ из настроек и ключ, полученный в запросе. Сами ключи создаются с помощью php-скрипта https://github.com/web-push-libs/web-push-php/blob...
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
glaphire
@glaphire Куратор тега PHP
PHP developer
Функция urlBase64ToUint8Array() высылает зашифрованные ключи на сторонний сервер (от имени которого будут лететь уведомления в браузер пользователя), а не на ваш сервер (код демки автора этого пакета), вам нужно получать эти ключи сырыми на бекенде самому (по-сути - читать из файла). Вам не нужно самому преобразовывать ключи на бекенде, это решается на уровне вендорного кода.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы