Base di conoscenze

1 000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!

Proteggere uno stream audio tramite una chiave univoca (token)

Aggiornamento 31/08/2026

Questa guida spiega come mantenere il controllo sui tuoi flussi di streaming radio MP3/AAC o HLS attivando la protezione tramite chiave univoca (token), in modo da poter decidere, ad esempio, se un ascoltatore può ascoltare la tua radio o meno.

 

Introduzione

  • Ad ogni connessione, verrà effettuata una richiesta all'API di Infomaniak, che restituirà un token univoco con una durata limitata e configurabile.
  • Questo token autorizzerà chiunque lo possieda ad accedere al flusso dati per la durata specificata.
  • È possibile proteggere un flusso MP3/AAC o HLS indipendentemente l'uno dall'altro (lo stesso vale per la geolocalizzazione).
  • L'attivazione della restrizione comporta una modifica della configurazione del flusso, la cui replica sui server potrebbe richiedere alcuni minuti.

 

Proteggere uno streaming audio tramite chiave univoca

Per farlo, è sufficiente accedere alle impostazioni di restrizione e attivare la protezione tramite token sullo streaming che si desidera proteggere:

  1. Clicca qui per accedere alla gestione del tuo prodotto tramite il pannello di controllo Infomaniak (hai bisogno di aiuto?).
  2. Clicca direttamente sul nome assegnato al prodotto in questione:
  3. Fare clic:
    1. sul nome della stazione radio:
    2. oppure su Restrizioni nel menu laterale sinistro per applicare restrizioni all'intero prodotto:
  4. Dopo aver selezionato a, fare clic su Restrizioni nel menu laterale sinistro.
  5. Se necessario, seleziona HLS.
  6. Fai clic sul menu delle azioni situato a destra dell'elemento in questione.
  7. Fare clic su Limitazione tramite token:

Attivare quindi la protezione.

Attenzione: nel momento in cui si attiva questa opzione, l'accesso allo streaming verrà immediatamente bloccato per le nuove connessioni.Adattare i lettori multimediali per tenere conto della restrizione, come illustrato nell'esempio qui sotto:

 

Creare un token API Radio

Per accedere all'API Radio, è necessario innanzitutto autenticarsi tramite un token applicazione. Questa operazione deve essere eseguita una sola volta. Per creare questo token applicazione, consultare questa guida.

L'ambito è radio e la durata è illimitata, per evitare di dover rigenerare il codice regolarmente. Una volta generato il token, copiarlo e incollarlo nell'esempio riportato di seguito.

 

Esempio di utilizzo in linguaggio PHP

Per MP3/AAC o HLS, il codice può essere sostanzialmente lo stesso, cambia solo l'URL chiamato nella richiesta POST, per quanto riguarda il suo formato.

Incolla qui sotto il token generato al posto di quello indicato:

if (!defined('API_TOKEN')) {
     define('API_TOKEN', 'AYF5lSh3c7Xy5974Fs12RTkTThujT-L9R4Xk2ZfGyP6sV7QqJ1oC3jD8nFtKzIxUeMw5oNzR6');
}
/**
 * Fonction générique pour executer des requêtes cURL
 *
 * @param string $method Méthode HTTP (GET, POST, PUT, etc...)
 * @param string $url Url de l'api a requêter
 * @param array $headers Liste des en-têtes HTTP (l'autorisation doit être passée ici avec un ['Authorization: Bearer ']
 * @param array $payload Un tableau contenant les données pour créer un token
 * @return mixed
 */

function request(string $method, string $url, array $headers = [], array $payload = []): mixed{
    // prepare options array
    $opts = [
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_URL => $url,
        CURLOPT_CUSTOMREQUEST => strtoupper($method),
    ];

    // add payload if relevant
    if ($payload && $method !== 'GET') {
        $opts[CURLOPT_POSTFIELDS] = json_encode($payload);
    }
    $ch = curl_init();
    curl_setopt_array($ch, $opts);
    $result = curl_exec($ch);
    if(curl_errno($ch)){
        throw new Exception(curl_error($ch));
    }
    $data = json_decode($result, true);
    if ($data['result'] === 'error') {
        throw new Exception($data['error']['description'] ?? 'an error occured');

    }
    return $data['data'];
}

 

Creeremo il token. L'URL per la creazione del token è strutturato come segue:

  • Per uno streaming MP3 / AAC
POST {{URL_11}}

Esempio per proteggere https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac: il percorso sarà: https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token

  • Per uno streaming HLS
POST {{URL_14}}

Esempio: per proteggere https://myradiostream.radiohls.infomaniak.com/myradiostream/manifest.m3u8, l'URL sarà: https://api.infomaniak.com/1/radios/acl/hls_streams/myradiostream/token

Esempio: nel caso di file MP3/AAC, ricordati di apportare le modifiche necessarie:

$token = request(
    'POST',
   '{{URL_17}}',
    // en-tête d'authorization
    [
        'Authorization: Bearer ' . API_TOKEN,
        'Content-Type: application/json',
    ],
    /**
     * payload pour créer le token, vous pouvez passer les valeurs suivantes
     * window     | 300               | optionnel | durée de validité du token (default: 5 minutes)
     */

    [
        'window' => 3600, // 1h validity
    ]
);

 

È importante notare che, se questo codice viene generato al momento del caricamento della pagina, l'utente avrà "window" secondi per avviare la riproduzione dello streaming. Superato questo limite di tempo, il token scadrà e lo streaming non potrà più essere avviato a meno che la pagina non venga ricaricata. A seconda delle vostre esigenze e del caso d'uso, sarà necessario regolare questo intervallo di tempo nel modo più appropriato.

Inoltre, sarà necessario sostituire di seguito l'URL di riproduzione dello streaming con quello desiderato, mantenendo il parametro $token alla fine. Infine, viene visualizzato il lettore (qui una semplice tag HTML5, ma è possibile aggiungere qualsiasi livello aggiuntivo in seguito, passando il token nei parametri $_GET dell'URL).

$streamUrl = "{{URL_18}}";
echo "<audio controls=""><source src="$streamUrl"></audio>";

Questa FAQ è stata utile?