- 06 Aug 2025
- Drucken
Token Schutz
- Aktualisiert am 06 Aug 2025
- Drucken
Token Schutz
LiveStream Pro unterstützt den Schutz von Events durch ein Token. Das bedeutet, dass auf eine LSPRO Viewer URL nur zugegriffen werden kann, wenn das Token gültig ist.
Die Generierung eines Tokens muss durch den integrierenden Dienst erfolgen, typischerweise ein Webportal oder eine mobile Anwendung, in die der Livestream über iFrame integriert ist.
Geteiltes Geheimnis
Das geteilte Geheimnis, das für die Implementierung der Token-Generierung relevant ist, wird vorab generiert und ist im Sicherheitsbereich verfügbar.
Berechnung der HMAC-Signatur
Erforderliche Authentifizierungsinformationen
Information | Beschreibung |
---|---|
webcast-id | Die ID des LiveStream Pro Events. |
exp-time | Der Zeitpunkt, zu dem die Signatur abgelaufen ist (Epochen-Zeitstempel). |
Shared secret | Can be found in the channel settings in the security tab. |
HMAC message schema
Zu finden in den Channel-Einstellungen auf der Registerkarte „Sicherheit“.
{"webcast-id":"%webcastId%","exp-time":"%expiryTime%"}
Die LiveStream Pro-ID finden Sie am Ende des Freigabelinks:
Code Beispiele
PHP (with sprintf)
<?php
$webcastId = "212zpS6bjN77eixPUMUEjR";
$sharedSecret = "abc123";
$hexedSharedSecret = "616263313233"; // the hexadecimal representation of the given shared secret "abc123" ( bin2hex('abc123') )
$lifeTime = 5;
function generateToken($webcastId, $hexedSharedSecret, $lifeTime)
{
$expiryTime = time() + ($lifeTime*60);
$data = sprintf("{\"webcast-id\":\"%s\",\"exp-time\":\"%s\"}" , $webcastId, $expiryTime);
$hash = hash_hmac ( "sha256", $data , hex2bin($hexedSharedSecret) );
$token = sprintf ("%s~%s", $expiryTime , $hash);
return $token;
}
$token = generateToken($webcastId, $hexedSharedSecret, $lifeTime);
echo $token;
?>
PHP (mit json_encode)
<?php
$webcastId = "212zpS6bjN77eixPUMUEjR";
$sharedSecret = "abc123";
$hexedSharedSecret = "616263313233"; // the hexadecimal representation of the given shared secret "abc123" ( bin2hex('abc123') )
$lifeTime = 5;
function generateToken($webcastId, $hexedSharedSecret, $lifeTime)
{
$expiryTime = time() + ($lifeTime*60);
$hashPattern = [
'webcast-id' => '%s',
'exp-time' => '%s',
];
$data = sprintf(json_encode($hashPattern), $webcastId, $expiryTime);
$hash = hash_hmac ( "sha256", $data , hex2bin($hexedSharedSecret) );
$token = sprintf ("%s~%s", $expiryTime , $hash);
return $token;
}
$token = generateToken($webcastId, $hexedSharedSecret, $lifeTime);
echo $token;
?>
Testing your HMAC-Implementation
Die Code-Beispiele konvertieren die „lifeTime“ des Tokens (in Minuten) in „expiryTime“ (den Unix-Epochen-Zeitstempel, der die genaue Sekunde angibt, zu der das Token abläuft). Das bedeutet, dass der generierte Code jedes Mal anders ausfällt, wenn Sie ihn berechnen, selbst wenn Sie dieselben Werte eingeben (die lifeTime wird in Sekunden umgerechnet und zur aktuellen Epochenzeit addiert). Sie können Ihre Ausgabe überprüfen, indem Sie sie mit einer bestimmten expiryTime testen, anstatt sie zu berechnen.
HMAC Beispiel
Sie können Ihre HMAC-Implementierung mit den folgenden Parametern testen:
Parameter | |
---|---|
webcast-id | 212zpS6bjN77eixPUMUEjR |
sharedSecret | abc123 |
hexedSharedSecret | 616263313233 (the hexadecimal representation of the given shared secret "abc123") |
expiryTime | 1671037090 |
Die Nachricht sollte wie folgt aussehen:
{"webcast-id":"212zpS6bjN77eixPUMUEjR","exp-time":"1671037090"}
Die folgende Signatur sollte mit diesen Parametern berechnet werden:
1671037090~09aeed76b483c0e4d34bdd1df6b4843dd436d8daf38f00cd13d6f62217d763e1
Verwendung des Tokens
Das Token muss als URL-Parameter zur URL des LiveStream Pro-Events hinzugefügt werden.
https://lspro.movingimage.com/view/mgh0YQsb7hJvw7Lj922HO?hmac-token=1671037090~09aeed76b483c0e4d34bdd1df6b4843dd436d8daf38f00cd13d6f62217d763e1