Come generare le chiavi VAPID con PHP

Le chiavi VAPID (Voluntary Application Server Identification) sono fondamentali per l'autenticazione e la sicurezza nelle applicazioni che utilizzano il Web Push. Queste chiavi sono utilizzate per identificare in modo univoco un server che invia notifiche push e per garantire che i messaggi non siano manipolati. In questo articolo, vedremo come generare le chiavi VAPID utilizzando PHP.

Prima di iniziare, assicurati di avere:

  • PHP installato sulla tua macchina.
  • Composer, il gestore di pacchetti per PHP, installato.

Utilizzeremo la libreria web-push-php sviluppata da Minishlink. Questa libreria semplifica la gestione delle chiavi VAPID e l'invio di notifiche push.

Esegui il seguente comando per installare la libreria tramite Composer:


composer require minishlink/web-push

Una volta installata la libreria, possiamo generare le chiavi VAPID con il seguente script PHP:


<?php
require 'vendor/autoload.php';

use Minishlink\WebPush\VAPID;

$keys = VAPID::createVapidKeys();

echo "Public Key: " . $keys['publicKey'] . PHP_EOL;
echo "Private Key: " . $keys['privateKey'] . PHP_EOL;

Salva questo script in un file chiamato generate_vapid_keys.php e eseguilo tramite la riga di comando:


php generate_vapid_keys.php

Vedrai l'output delle chiavi VAPID, sia la chiave pubblica che quella privata.

Ora che hai generato le chiavi, puoi utilizzarle per inviare notifiche push. Ecco un esempio di come utilizzare queste chiavi in uno script PHP per inviare una notifica:


require 'vendor/autoload.php';

use Minishlink\WebPush\WebPush;
use Minishlink\WebPush\Subscription;

// Sostituisci con le chiavi generate
$publicKey = 'YOUR_PUBLIC_KEY';
$privateKey = 'YOUR_PRIVATE_KEY';

$auth = [
    'VAPID' => [
        'subject' => 'mailto:your-email@example.com',
        'publicKey' => $publicKey,
        'privateKey' => $privateKey,
    ],
];

$webPush = new WebPush($auth);

// Sostituisci con l'iscrizione dell'utente
$subscription = Subscription::create([
    'endpoint' => 'https://fcm.googleapis.com/fcm/send/...',
    'publicKey' => 'user_public_key',
    'authToken' => 'user_auth_token',
]);

$payload = json_encode([
    'title' => 'Titolo della Notifica',
    'body' => 'Corpo della notifica',
    'icon' => 'URL dell\'icona',
]);

$webPush->sendNotification(
    $subscription,
    $payload
);

// Controlla i risultati
foreach ($webPush->flush() as $report) {
    $endpoint = $report->getRequest()->getUri()->__toString();

    if ($report->isSuccess()) {
        echo "[v] Success: {$endpoint}\n";
    } else {
        echo "[x] Failed: {$endpoint}: {$report->getReason()}\n";
    }
}

Conclusione

Generare e utilizzare le chiavi VAPID in PHP รจ un processo relativamente semplice grazie alla libreria web-push-php. Questo ti consente di implementare notifiche push sicure e autentiche nella tua applicazione web. Seguendo i passaggi sopra descritti, sarai in grado di generare le chiavi VAPID e inviare notifiche push ai tuoi utenti.

Torna su