我用HLS file 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是我的API端点URL。我将从API中获得密钥。
但是每当我在浏览器中复制粘贴密钥URI (https://xxxxx.com/api/xxx/xxxxx/xxxxxxxxxxxx/xxxxxxx.key)时,密钥就会被下载。
当玩家请求键URI时,如何通过标题授权。
或者是否有任何方法来保护密钥URI?
我正在播放Bitmovin (Nodejs)的视频,我们能通过密钥请求URI的头授权吗?
提前谢谢。
发布于 2022-03-08 09:40:39
保护web的一种常见方法是使用JSON Web令牌 (JWT)并使用授权 HTTP请求头将它们发送到API。
至于Bitmovin (我是其中的一个开发人员),可以使用Network的preprocessHttpRequest方法将headers添加到请求中。例如,可以通过以下方式将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);您不必使用JWTs -您可以使用Authorization头将任意数据传输到API。但是,使用JWT更安全,因为这些令牌通常由受信任的源(如谷歌的OpenID连接)生成,并被签名以防止任何修改。如果您想使用JWT进行身份验证,则您的API必须提供一个端点来获取它们。
https://stackoverflow.com/questions/68078095
复制相似问题