如何验证播放会话



我正在用AWS CloudFront提供HLS视频。内容用签名的饼干固定。我希望用户能够使用Apple Airplay在Airplay设备上观看视频。具有有效云前饼干的经过身份验证的iOS Safari客户端可以播放视频。

如果用户随后使用AirPlay在AppleTV上观看视频,则AppleTV会从iPhone中观看URL,但仅此URL,因此当请求没有适当的cookie标头时,请求会拒绝,不出所料,有403。

我一直在寻找文档,这是我唯一能找到的东西(从2012年开始(,这似乎表明这是可能的,但据我所知,似乎缺乏有关如何如何处理的关键信息使一切都起作用。

我已经能够确定可以在AirPlay设备上设置Cookie,并且这些cookie将被返回。

我不知道的是如何将任何形式的秘密从"共享者"传递给Airplay设备,以及如何将其传递给服务器。如果我可以得到cookie,自定义的HTTP标头或附加到AirPlay设备提出的请求的查询参数,然后我可以使用AWS Cloudfront lambda用秘密进行身份验证并在AirPlay设备上设置cookie。

我遇到了同样的问题,并与苹果开了一张票。这是他们的回应,我最终通过我们的CDN使用了另一种解决方案,因为确定我们的iOS开发人员不想这样进行,但认为这可能对仍在处理此问题的任何人都有帮助。

'''您描述的情况是,cookie和其他自定义标头信息在iOS应用程序中的Roku设备上删除的情况可能是由于已知的建筑问题所致。更具体地说,这样做的原因通常是在接收器将独立于iOS设备流式传输所请求的内容的跨播放边界上,并且出于隐私原因,这不允许将自定义标头插入请求流中。

为了解决此行为,您可以考虑使用AvassetResourceloader的替代方案。例如,下面描述的是这样的方案,您可以实现(或类似(:

(1(当应用程序从服务器接收主播放列表URL时,它仍然可以提供cookie(通过avurlassethttppcookieskey(,但将主播放列表URL变成带有自定义方案的URL(例如vid://content( - 无论如何(并将其提供给Avplayer。

(2(只要Avplayer需要在本地播放和AirPlay之间切换时,它将重新要求从App Avassetresourceloader demegate中重新要求Vid://url,以获取Master Playlist

(3(如果会话不是播放的(换句话说,如果用户代理将其标识为iOS,而不是Apple TV或类似(,则该应用程序将服务器提供给AvassetResourceloader请求的主播放列表URL作为一个重定向, - 客户端设备上的Avoundation将要求主播放列表URL,以前提供AvurlassEthtpCookies

(4(如果会话是播放的,则该应用程序再次调用其服务器以获取一次性https" cast" URL,当从Apple TV或类似的情况下发送时,该URL将导致服务器响应身份cookie。该应用将铸件URL提供给Avassetresourceloader的请求作为重定向 - 然后,Apple TV将进行演员URL,这应该适当地提供其Cookie商店

如果您决定走这条路线,则有一些归档的示例代码" avarldelegatedemo"(https://develoverer.apple.com/library.com/library/archive/samplecode/samplecode/samplecode/samplecode/samplecode/samplecode/samplecode/samplecode/samplecode/introduction/introduction/intro.html#/apple/apple_ref/doc/uid/dts40014357(,可以帮助您入门。该示例代码描述了HLS(HTTP实时流媒体(的AvassetResourceloaderdelegate(用于身份加密的用例场景(的几个不同的用例: - 重定向处理程序(http live流媒体介质的重定向(媒体(段( - HTTP实时流媒体的自定义播放列表生成(索引文件(。'''

我们遇到了同样的问题。最终做了类似的事情:https://aws.amazon.com/blogs/networking-and-content-delivery/secure-and-cost-cost-cost-cost-cost-efferce--video-streaming-using-cloud-signed-signed-urls/

基本上:

  1. 仅保护Master.M3U8
  2. lambda@edge获取授予请求是有效的(到已执行登陆的那一刻已验证签名(
  3. (
  4. 它可以创建将保护其余资源(变体列表和TS段(
  5. 的cookie

最新更新