Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure Media Services中视频创建和按需令牌发布的完整示例_C#_Html_Azure_Azure Media Services - Fatal编程技术网

C# Azure Media Services中视频创建和按需令牌发布的完整示例

C# Azure Media Services中视频创建和按需令牌发布的完整示例,c#,html,azure,azure-media-services,C#,Html,Azure,Azure Media Services,我正在尝试创建一个在线学习系统,其中包含与课程相关的视频。当用户开始上课时,需要播放视频。视频不应该播放,除非我验证用户可以播放该视频,并且可以立即播放。我正在尝试使用azure视频播放器来实现这一点 我可以在azure media services中实现这一点,而无需加密,不会出现任何问题 然而,当我去做加密,样本是非常星期 我试图做的是加密视频,以便它可以在所有浏览器上播放,并拥有azure视频播放器所需的一切 此外,在用户请求播放视频时,我希望使用他们对我们网站的身份验证来确定视频是否应该

我正在尝试创建一个在线学习系统,其中包含与课程相关的视频。当用户开始上课时,需要播放视频。视频不应该播放,除非我验证用户可以播放该视频,并且可以立即播放。我正在尝试使用azure视频播放器来实现这一点

我可以在azure media services中实现这一点,而无需加密,不会出现任何问题

然而,当我去做加密,样本是非常星期

我试图做的是加密视频,以便它可以在所有浏览器上播放,并拥有azure视频播放器所需的一切

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

我本以为媒体服务会使用oAuth 2,我可以将它指向我们的端点,用户请求的特定视频需要一个特定的声明,我会返回一个auth令牌,或者不返回。但它似乎是从这一点起反作用的

因此,我做了以下工作:

  • 进入经典门户(因为它显然没有更新为使用新门户或新的存储方式…)
  • 已创建媒体服务帐户
  • 在视频中,我尽可能地了解了内容保护,并为json和web令牌输入Type token
  • 在issuer for aes和playready下,我已经找到了oAuth提供商的路径,但我根本不确定这应该是什么,也找不到任何文档来解释这应该是什么
  • 范围:在ae下,示例与urn:Portal类似,但在playready下,这必须是一个完整的URI,我不知道应该是什么
  • 我为这两种类型创建了验证密钥
  • 我不知道该在索赔中写些什么,也不知道这有什么关系
  • 许可证类型=非持久性
  • 将视频内容传递到未知输出,我已将其设置为允许。我不知道“允许压缩”的作用是什么,也不知道应该如何设置
  • 允许测试设备现在已启用
  • 然后,在我的编码内容中,在从示例创建资产之后,我加入了以下内容:

    //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);
    
    但是,如果我尝试启用这三种功能,使其能够像您预期的那样在代码中启用和工作(注意,上面调用的方法直接来自示例),那么这三种功能都会崩溃,而且我找不到示例(这似乎是Chrome、Firefox和IE/Edge可靠工作所必需的)

    此外,我不知道如何在这段代码中使用来自门户的验证密钥,因为我在这段代码中找不到任何示例

    假设这将资产设置为具有自己的身份验证。虽然我不知道。但我想要并且需要做的是让每个资产分别由资产和用户进行身份验证,而不让承载令牌在其他任何地方可用

    在这一点上,我完全不知所措,因为我能找到的生成JWT的唯一代码是测试内容,显然不应该在生产中使用

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

    然后我想将它设置在安全凭据中(并将所有的排列都放进去!),这样它就可以在有问题的浏览器(即edge、firefox、chrome、safari)上正常工作,播放器会将其与其他浏览器一起发送,视频只会在任何浏览器上播放

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

    那么,是否有一个示例可以引导您完成整个过程,以便在任何web浏览器中完成此操作,并为所有浏览器生成加密,并根据每个问题为客户端生成令牌

    如果没有,有人能帮助回答这些问题吗

    如果这是MS看这个,我建议你考虑给我们一个在客户端只有一个URL的能力,并通过我们的OAuth2承载令牌(不是你的)。您是否使用该功能与我们进行单点登录,并要求索赔通过资产id并获得yea/nea,以在其授权的时间跨度内播放视频,并在涉及的特定客户上播放视频。如果现在可以,请提供完整的示例或说明,说明如何实现此功能,因为目前还不清楚所有的东西都是针对广告的,这是没有用的,而且还有大量的缺失

    最终,我需要能够在网络和移动客户端上实时播放这些内容,能够下载加密的内容,并在离线的移动客户端上播放这些内容,但仍然是加密和锁定的。这些最后的片段我现在不知道如何做,也找不到任何文档,但我会问那是分开的

    谢谢

    额外阅读 找到相关资源,但不回答问题,或仅部分回答问题并打断其他部分:


    • 我们没有太多的样本来构建定制(STS),因为每个企业可能都有自己的需求,而且很多客户正在进行集成工作(即,他们已经有了代币发行人服务)

      如前所述,我很高兴帮助您完成您的工作流程。您可以通过电子邮件发送给我yanmf@microsoft.com我可以打电话来解决你的工作流程问题

      干杯, 严明飞

      谢谢