安全的HLS AES-128密钥URI



我使用苹果工具通过HLS AES-128对视频进行了加密,下面是我的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是我的API端点URL。。我将从API获得密钥。

但是每当我复制粘贴密钥URI时(https://xxxxx.com/api/xxx/xxxxx/xxxxxxxxxxxx/xxxxxxx.key)在浏览器中,密钥被下载。

如何在玩家请求密钥URI时传递标头授权。

或者有什么方法可以保护密钥URI?

我正在播放Bitmovin播放器(Nodejs(的视频,我们可以通过密钥请求URI的头部授权吗?

提前谢谢。

保护web API的一种常见方法是使用JSON web令牌(JWT(,并使用授权HTTP请求头将其发送到API。

至于Bitmovin Player Web SDK(我是该软件的开发人员(,可以使用Network API的预处理HttpRequest方法将HTTP头添加到请求中。例如,将JWT身份验证令牌传递给HLS密钥请求的API可以通过以下方式完成:

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——您可以使用Authorization头将任意数据传输到API。然而,使用JWT更安全,因为这些令牌通常由可信来源(如谷歌的OpenID Connect(生成,并进行签名以防止任何修改。如果您想使用JWT进行身份验证,那么API必须提供一个端点来获取它们。

相关内容

  • 没有找到相关文章

最新更新