我使用苹果工具通过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必须提供一个端点来获取它们。