安全 HLS AES-128 密钥 URI

Raj*_*ree 1 node.js bitmovin-player angular

我使用苹果工具通过 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
Run Code Online (Sandbox Code Playgroud)

密钥 URI 是我的 API 端点 URL。我将从 API 获取密钥。

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

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

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

我正在使用 Bitmovin 播放器(Nodejs)播放视频,我们可以传递密钥请求 URI 的标头授权吗?

提前致谢。

Wol*_*ter 6

保护 Web API 的一种常见方法是使用JSON Web 令牌(JWT) 并使用授权HTTP 请求标头将它们发送到 API 。

至于 Bitmovin Player Web SDK(我是其开发人员),可以使用Network API 的preprocessHttpRequest方法将 HTTP 标头添加到请求中。例如,可以通过以下方式将 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);
Run Code Online (Sandbox Code Playgroud)

您不必使用 JWT - 您可以使用Authorization标头将任意数据传输到 API。然而,使用 JWT 更安全,因为这些令牌通常是由可信来源(例如Google 的 OpenID Connect)生成的,并且经过签名以防止任何修改。如果您想使用 JWT 进行身份验证,您的 API 必须提供一个端点来获取它们。