Защищенный URI ключа HLS AES-128
Я зашифровал видео с помощью HLS AES-128 с помощью инструмента Apple, ниже мой файл m3u8
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-KEY:METHOD=AES-128,URI="https://xxxxx.com/api/xxx/xxxxx/xxxxxxxxxxxx/xxxxxxx.key"
#EXTINF:10,
#EXT-X-BITRATE:658
8ce9e1ef-4b15-4d22-b2dc-c7278757ffb5_0.ts
#EXTINF:10,
#EXT-X-BITRATE:1798
8ce9e1ef-4b15-4d22-b2dc-c7278757ffb5_1.ts
#EXTINF:1,
#EXT-X-BITRATE:620
8ce9e1ef-4b15-4d22-b2dc-c7278757ffb5_2.ts
#EXT-X-ENDLIST
URI ключа - это URL-адрес конечной точки моего API ... из API я получу ключ.
но всякий раз, когда я копирую и вставляю ключевой URI (https://xxxxx.com/api/xxx/xxxxx/xxxxxxxxxxxx/xxxxxxx.key) в браузере, ключ загружается.
как пройти авторизацию заголовка всякий раз, когда игрок запрашивает ключевой URI.
или есть ли способ защитить ключевой URI?
Я воспроизводю видео с помощью проигрывателя Bitmovin (Nodejs), можем ли мы передать авторизацию заголовка для URI запроса ключа?
Заранее спасибо.
1 ответ
Одним из распространенных способов защиты веб-API является использование веб-токенов JSON (JWT) и отправка их в API с использованием заголовка HTTP-запроса авторизации .
Что касается Bitmovin Player Web SDK (разработчиком которого я являюсь), заголовки HTTP можно добавлять к запросам с помощью метода preprocessHttpRequest Network API.Например, передача токена авторизации JWT в API для запросов ключа HLS может быть выполнена следующим образом:
const token = 'your-jwt-token';
const playerConfig = {
key: 'your-key',
network: {
preprocessHttpRequest: (type, request) => {
// Only add the `Authorization` header to HLS key requests
if (type === bitmovin.player.HttpRequestType.KEY_HLS_AES) {
// Add the `Authorization` header containing the JWT to the request
request.headers['Authorization'] = 'Bearer ' + token;
}
return Promise.resolve(request);
}
}
};
const player = new bitmovin.player.Player(document.getElementById('player'), playerConfig);
Вам не нужно использовать JWT — вы можете передавать произвольные данные в API, используя
Authorization
заголовок. Однако использование JWT более безопасно, поскольку эти токены обычно генерируются надежным источником (например , OpenID Connect от Google ) и подписываются для предотвращения любых модификаций. Если вы хотите использовать JWT для аутентификации, ваш API должен предоставить конечную точку для их получения.