Base de conocimientos
1 000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Seguridad de un flujo de audio con una clave única (token)
Esta guía explica cómo mantener el control sobre sus flujos de Radio en Streaming MP3/AAC o HLS activando la protección por clave única (token) para decidir, por ejemplo, si un oyente puede escuchar su radio o no.
Prólogo
- Cada vez que se conecte, realizará una solicitud a la API de Infomaniak, que le devolverá un token único con una duración limitada y configurable.
- Este token permitirá a quien lo posea consumir el flujo durante este período.
- Puede proteger un flujo MP3/AAC o HLS de forma independiente (lo mismo ocurre con la geolocalización).
- La activación de la restricción implica un cambio en la configuración del flujo que puede tardar unos minutos en replicarse en los servidores.
Proteger un flujo de audio por clave única
Para ello, basta con dirigirse a los parámetros de restricciones y activar la protección por token en el flujo que desea proteger:
- Haga clic aquí para acceder a la gestión de su producto en el Gestor de Infomaniak (¿Necesita ayuda?).
- Haga clic directamente en el nombre asignado al producto correspondiente:

- Haga clic:
- o en el nombre de la radio:

- o en Restricciones en el menú lateral izquierdo para aplicar restricciones al producto entero:

- o en el nombre de la radio:
- Al elegir
aarriba, haga clic luego en Restricciones en el menú lateral izquierdo. - Seleccione HLS si es necesario.
- Haga clic en el menú de acción ⋮ situado a la derecha del elemento correspondiente.
- Haga clic en Restricción por token:

Active luego la protección.
Atención, en el momento en que active esta opción, el acceso al flujo se bloqueará instantáneamente para las nuevas conexiones. Adapte sus reproductores para tener en cuenta la restricción, como se ilustra en el ejemplo a continuación:
Crear un token de API de Radio
Para acceder a la API de Radio, primero debe autenticarse utilizando un token de aplicación. Este paso solo se realiza una vez. Para crear este token de aplicación, consulte esta otra guía.

El ámbito es radio y la duración es ilimitada para evitar tener que regenerar un código de manera regular. Una vez generado el token, cópielo para pegarlo en el ejemplo a continuación.
Ejemplo de uso en lenguaje PHP
Para MP3/AAC o HLS, el código puede ser bastante similar, solo cambia la URL llamada en POST en cuanto a su forma.
Pegue a continuación el token generado en lugar del indicado:
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'];
}Vamos a crear el token, la URL de creación del token se desglosa de la siguiente manera:
- Para un flujo MP3 / AAC
POST https://api.infomaniak.com/1/radios/acl/streams/mountpoint.mp3/tokenEjemplo para proteger https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac la ruta será: https://api.infomaniak.com/1/radios/acl/streams/newradiotest-128.aac/token
- Para un flujo HLS
POST https://api.infomaniak.com/1/radios/acl/hls_streams/<stream>/tokenEjemplo para proteger https://myradiostream.radiohls.infomaniak.com/myradiostream/manifest.m3u8 la ruta será: https://api.infomaniak.com/1/radios/acl/hls_streams/myradiostream/token
Ejemplo en el caso del MP3 / AAC, recuerde ajustar:
$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
]
);Es importante tener en cuenta que si este código se genera en el momento de cargar la página, el oyente tendrá "window" segundos para iniciar la reproducción del flujo. Pasado este plazo, el token expirará y el flujo no podrá iniciarse a menos que se recargue la página. Según sus necesidades y su caso de uso, será necesario ajustar este plazo de la mejor manera posible.
También deberá reemplazar a continuación la URL de reproducción de su flujo en lugar de la indicada, conservando el parámetro $token al final. Y para terminar, se muestra el reproductor (aquí una simple etiqueta html5, pero se puede agregar cualquier sobrecarga después, ya que el token se pasa en los parámetros $_GET de la url).
$streamUrl = "https://newradiotest.ice.infomaniak.ch/newradiotest-128.aac?$token";
echo "<audio controls=""><source src="$streamUrl"></audio>";Enlace a esta FAQ:
¿Le ha sido útil esta FAQ?