在HTTP Live Streaming中使用承载令牌身份验证?

时间:2017-10-13 20:19:03

标签: hls bearer-token

我预期结果的情景:

  1. 用户登录Web门户。
  2. 门户网站显示允许用户访问的内容。
  3. 用户选择一段内容,将其浏览器定向到该内容的m3u8文件。
  4. 每条内容都有一个加密密钥。 m3u8文件包​​含该视频密钥的URL,该URL是带有查询字符串的REST端点(例如https://www.mymediaserver.com/api/key/100
  5. 当且仅当与请求一起提供了承载令牌时,REST API才会以原始形式将密钥传递给请求者。用于处理令牌的密钥与用于前端API的密钥相同(例如,列出可用的视频内容)。换句话说,用户代理提供的用于填充前端的API请求的相同授权标头也可用于密钥检索。 (这不是理想的,但这是一个开始,这个项目在现阶段更具概念验证。)
  6. 视频播放器会在请求中包含Authorization标头,从而接收密钥并能够播放内容。
  7. 以下是我的问题:

    • 预期用例只是在浏览器中播放视频。我可以使用<video>标记,甚至只是将浏览器重定向到文件以开始全屏播放内容,用户可以在播放后使用“返回”按钮。
    • 我还没有开始构建所有这些,因为我不确定视频播放引擎实际上是如何请求密钥的。有没有办法修改用于获取密钥的HTTP请求,以便我可以添加Authorization标头?
    • 或者,或许,视频播放器会自动添加适当的现有Authorization标头吗?

    我有过的理论:

    • 我可以动态生成m3u8文件,将承载令牌添加为查询字符串参数。但是,我必须弄清楚如何让我的REST端点从查询字符串而不是从头中读取承载令牌。这将是一个额外的步骤。
    • 我可以生成我自己的一次性密钥检索字符串,并将其与上述想法结合起来,但我必须添加额外的基础设施来存储密钥,在使用时使它们到期等等。

    摘要问题:

    • 在设置为HLS视频包提供解密密钥的REST样式端点时,如何实现承载令牌?

    注意:

    • 后端API是一个C#ASP.NET Web API项目。
    • 视频选择的前端是Angular。
    • 我现在只打算为这个项目支持iOS。
    • 我知道特别狡猾的用户可能能够弄清楚如何检索密钥。我试图阻止从服务器上随意下载视频内容。 (我完全意识到你不能阻止复制,但你可以防止随意,轻松复制。)
    • 目前,这只是一个内部视频托管平台的概念验证理念,这使得至少难以检索视频内容以便在网站外播放而无需身份验证。

0 个答案:

没有答案