Base di conoscenze
1 000 FAQ, 500 tutorial e video esplicativi. Qui ci sono delle soluzioni!
Proteggere un flusso audio con token unico
Questa guida spiega come mantenere il controllo sui tuoi flussi di Streaming Radio MP3/AAC o HLS attivando la protezione tramite chiave unica (token) per decidere, ad esempio, se un ascoltatore può ascoltare la tua radio o meno.
Premessa
- Ad ogni connessione, effettuerai una richiesta all'API Infomaniak che ti restituirà un token unico con una durata limitata e configurabile.
- Questo token autorizzerà chiunque lo possieda a consumare il flusso durante questo periodo.
- Puoi proteggere un flusso MP3/AAC o HLS indipendentemente l'uno dall'altro (stesso discorso per la geolocalizzazione del resto).
- L'attivazione della restrizione comporta una modifica della configurazione del flusso che può richiedere alcuni minuti per essere replicata sui server.
Proteggere un flusso audio tramite chiave unica
Per farlo, basta andare nelle impostazioni delle restrizioni e attivare la protezione tramite token sul flusso che si desidera proteggere:
- Clicca qui per accedere alla gestione del tuo prodotto sul Manager Infomaniak (hai bisogno di aiuto?).
- Clicca direttamente sul nome attribuito al prodotto interessato:

- Clicca:
- oppure sul nome della radio:

- oppure su Restrizioni nel menu laterale sinistro per applicare restrizioni all'intero prodotto:

- oppure sul nome della radio:
- Quando scegli
asopra, clicca poi su Restrizioni nel menu laterale sinistro. - Scegli HLS se necessario.
- Clicca sul menu di azione ⋮ situato a destra dell'elemento interessato.
- Clicca su Restrizione tramite token:

Attiva quindi la protezione.
Attenzione, al momento in cui attiverai questa opzione, l'accesso al flusso sarà istantaneamente bloccato per le nuove connessioni. Adatta i tuoi Player per tenere conto della restrizione, come illustrato nell'esempio qui sotto:
Creare un token API Radio
Per accedere all'API Radio, è necessario autenticarsi innanzitutto tramite un token di applicazione. Questa operazione va eseguita una sola volta. Per creare questo token di applicazione, consultare questa guida.

Il campo di applicazione è radio e la durata è illimitata per evitare di dover rigenerare un codice in modo regolare. Una volta generato il token, copiarlo per incollarlo nell'esempio sottostante.
Esempio di utilizzo in linguaggio PHP
Per MP3/AAC o HLS, il codice può essere sostanzialmente lo stesso, cambia solo l'URL chiamata in POST a livello della sua forma.
Incollare 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'];
}Vediamo come creare il token, l'URL di creazione del token si scompone come segue:
- Per un flusso MP3 / AAC
POST https://api.infomaniak.com/1/radios/acl/streams/mountpoint.mp3/tokenEsempio per proteggere https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac la rotta sarà: https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token
- Per un flusso HLS
POST https://api.infomaniak.com/1/radios/acl/hls_streams/<stream>/tokenEsempio per proteggere https://myradiostream.radiohls.infomaniak.com/myradiostream/manifest.m3u8 la rotta sarà: https://api.infomaniak.com/1/radios/acl/hls_streams/myradiostream/token
Esempio nel caso del MP3 / AAC, ricordarsi di regolare:
$token = request(
'POST',
'https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token',
// 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'ascoltatore avrà "window" secondi per avviare la riproduzione del flusso. Oltre questo periodo, il token scadrà e il flusso non potrà più essere avviato a meno che la pagina non venga ricaricata. A seconda delle esigenze e del caso d'uso, sarà necessario regolare questo periodo nel modo migliore possibile.
Sarà anche necessario sostituire qui sotto l'URL di riproduzione del proprio flusso al posto di quella indicata mantenendo il parametro $token alla fine. E per finire, si visualizza il Player (qui una semplice etichetta html5, ma si può aggiungere ovviamente qualsiasi sovrapposizione dopo, il token essendo passato nei parametri $_GET dell'url).
$streamUrl = "https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac?$token";
echo "<audio controls=""><source src="$streamUrl"></audio>";Link a questa FAQ:
Questa FAQ è stata utile?