Azure Media Services

时间:2016-01-11 16:13:46

标签: c# html5 azure azure-media-services

我正在尝试创建一个包含与课程相关的视频的电子教学系统。当用户上课时,视频需要播放。除非我验证用户可以播放该视频并且可以立即播放,否则视频不应播放。我试图用天蓝色的视频播放器来实现这个目标。

我可以使用azure媒体服务,无需加密即可。

然而,当我去加密时,样本非常周。

我尝试做的是对视频进行加密,使其可以在所有浏览器上播放,并拥有蔚蓝视频播放器所需的一切。

此外,在用户请求播放视频时,我想在我们的网站上使用他们的身份验证来确定视频是否应该播放,然后在媒体服务上设置令牌。

我原本预计媒体服务会使用oAuth 2,我可以在我们的端点上指出用户请求的特定视频所需的特定声明,我会返回一个身份验证令牌。但它似乎从此向后工作。

所以我做了以下事情:

  1. 进入经典门户网站(因为显然没有更新为使用新门户网站或新的存储方式......)
  2. 创建了媒体服务帐户。
  3. 尽可能地保护内容,因为我可以从视频中找到最佳内容,为两者和json网络令牌输入类型标记。
  4. 对于aes和playready的发行人,我已经进入了我们的oAuth提供商的路径,但我完全不确定这应该是什么,我找不到任何解释内容的文档这应该是。
  5. 范围:在ae下,样本与urn类似:Portal但在playready下这必须是一个完整的URI,我无法弄清楚那里应该是什么。
  6. 我为这两种类型创建了验证密钥
  7. 我不知道索赔中的内容或相关内容。
  8. 许可证类型=非持久性
  9. 将视频内容传递给未知输出我已将其设置为“允许”。我不知道收缩的内容是什么或者应该如何设置。
  10. 目前已启用允许的测试设备。
  11. 然后在我的编码内容中,我从样本创建资产后进行了以下操作:

    //Add encryption
                var key = CreateEnvelopeTypeContentKey(context, finalAsset);
    
                var tokenTemplateString = AddTokenRestrictedAuthorizationPolicy(context, key, audience, issuer);
    
                CreateAssetDeliveryPolicy(context, finalAsset, key);
    
                var tokenTemplate = TokenRestrictionTemplateSerializer.Deserialize(tokenTemplateString);
    
                var rawKey = EncryptionUtils.GetKeyIdAsGuid(key.Id);
    
                string testToken = TokenRestrictionTemplateSerializer.GenerateTestToken(tokenTemplate, null, rawKey);
    

    但是,如果我尝试启用这些东西以获得游戏准备,那么野性和BaselineHttp一切都会爆炸,我找不到所有3个示例(Chrome,Firefox和IE / Edge似乎都需要可靠工作)的示例正如您所期望的那样在代码中工作。 (注意上面提到的方法直接来自样本)

    此外,我无法弄清楚如何在此代码中使用门户网站中的验证密钥,因为我无法在此找到任何示例。

    据推测,这可以使资产拥有自己的身份验证。虽然我不能说。但我想要和需要做的是让每个资产由资产和用户单独进行身份验证,而不是让其他任何地方都可以使用持有者令牌。

    此时我完全迷失了,因为我能找到生成JWT的唯一代码是显然不应该在生产中使用的测试内容。

    我正在寻找的代码是不使用Azure AD并允许我自己创建的代码,因此当用户想要观看视频时,他们会来找我,我说,是的,你很好,这里是你的令牌,只有你自己和没有其他人在我的web api中用C#创建,只返回json响应中的令牌。

    然后我想在安全凭证中设置它(并将所有的排列放入!),这样它就可以在有问题的浏览器上工作(即edge,firefox,chrome,safari),玩家发送无论什么浏览器,其他人都可以播放视频。

    但是因为我既不能用正确的密钥加密视频,也不能根据样本对所有的排列进行加密,也没有找到基于共享密钥和我需要存储在基于数据库的任何内容中正确创建JTW的任何示例在加密过程中,我被困住了。

    那么在某个地方有一个示例,它会指导您完成这个完整的过程,以便在完成后在任何Web浏览器中运行,并为每个Web浏览器生成加密,并在每个问题的基础上为客户端生成令牌吗?

    如果没有,有人可以帮助回答这些问题吗?

    如果这是MS看着这个,我建议您考虑让我们能够在客户端只拥有单个网址,并传递我们的oAuth2不记名令牌(不是你的)并让你用它来单独登录我们,并要求声明通过资产ID并获得一个yea / nea播放视频的时间跨度,他们授权在相关的特定客户端播放它。如果现在可以做到这一点,请提供完整的样本或说明如何实现这一点,因为此时此刻并不清楚,所有内容都适用于AD,这不是很有用且有很多缺件。

    最终,我需要能够在网络和移动客户端上直播这些内容,并且能够加密下载这些内容并在相同的移动客户端上脱机播放,但仍然加密和锁定。那些最后的部分我不知道如何做到这一点,我也找不到任何文件,但我会单独问这个。

    谢谢!

    发现资源相关但不回答问题或仅部分回答问题并打破其他部分:

    https://azure.microsoft.com/en-us/documentation/articles/media-services-dotnet-configure-asset-delivery-policy/

    https://azure.microsoft.com/en-us/documentation/articles/media-services-protect-with-aes128/#client_request

    https://azure.microsoft.com/en-us/documentation/articles/media-services-protect-with-aes128/#client_request

    http://amp.azure.net/libs/amp/latest/docs/index.html#protected-content

    http://amp.azure.net/libs/amp/latest/docs/index.html#playback-technology-tech-

    https://azure.microsoft.com/en-us/blog/how-to-make-token-authorized-aes-encrypted-hls-stream-working-in-safari/

    http://gtrifonov.com/2015/01/24/mvc-owin-azure-media-services-ad-integration/(这个似乎是最近的,但我无法将其与Azure AD分离)

1 个答案:

答案 0 :(得分:0)

我们没有大量样本来构建自定义STS,因为每个企业可能有自己的要求,而且许多客户正在进行集成工作 - 他们已经拥有令牌发行服务。如上所述,我很乐意帮助您完成工作流程。您可以发送电子邮件至yanmf@microsoft.com,我可以打电话来解决您的工作流程问题。

干杯, 严明飞