【问题标题】:Azure Media Services AAD Token C#Azure 媒体服务 AAD 令牌 C#
【发布时间】:2018-07-16 15:52:17
【问题描述】:

目前,我很难将 AAD 与 Azure 媒体服务集成。 我必须从 AAD 获取不记名令牌,然后将该令牌传递给 Azure 媒体播放器以播放加密视频,但我总是收到以下错误:无法解密加密的视频源。 (0x20500004)。

这是我正在使用的代码的两个 sn-ps。 C#代码:

string tenant = "xxxxxxxxxcom.onmicrosoft.com";
string clientId = "xxxxxxxx-xxxx-xxx-xxxx-xxxxxxxxxxx";
string clientSecret = "xxxXXXXXXXXXXXXXXXXXXXXXXXxxxx=";
var tokenCredentials = new AzureAdTokenCredentials(tenant, new AzureAdClientSymmetricKey(clientId, clientSecret), AzureEnvironments.AzureCloudEnvironment);
var tokenProvider = new AzureAdTokenProvider(tokenCredentials);
var token = tokenProvider.GetAccessToken();

C# Code Integration With Azure AAD

“Microsoft.WindowsAzure.MediaServices.Client”版本为 4.1

Asp.net/JavaScript 代码:

<script>
    var playerOptions = {
        "nativeControlsForTouch": false,
        controls: true,
        autoplay: true,
        width: "100%",
        height: "auto",
        techOrder: ["azureHtml5JS", "flashSS", "html5FairPlayHLS", "silverlightSS", "html5"],
        logo: {
            enabled: true
        },
        poster: "https://xxxxxxxxxx.blob.core.windows.net/assetxxxxxxxx-xxxx-410d-xxxx-7xxxxxxxxxxxx/xxxxx11563.jpg?sv=2015-07-08&sr=c&si=xxxxxx-xxxx-xxxxxxx-xxxxxx&sig=xxxxxxxxxxxxxxxb%2F%2FTlyHLU6DTcf%2FdfWMaMSqw%3D&se=2078-06-12T16%3A08%3A03Z",
        plugins: {
            ga: {
                'eventsToTrack': ['playerConfig', 'loaded', 'playTime', 'percentsPlayed', 'start', 'end', 'play', 'pause', 'error', 'buffering', 'fullscreen',     'seek', 'bitrate'],
                'debug': false
            }
        }
    };    
    var playerSrc = [{
        src: "http://xxxxxxxxx.streaming.mediaservices.windows.net/xxxxxx-xxx-xxxx-xxx-xxxx/xxxxxx.ism/manifest" + "(format=m3u8-aapl)",
        "type": "application/vnd.ms-sstr+xml",
        "protectionInfo": [{
            "type": "AES",
            "authenticationToken": "Bearer @ViewBag.Token"
        }],
        "streamingFormats":["SMOOTH","DASH"]
    }];
</script>

Asp.net/JavaScript Code

Azure 播放器的链接是:https://ampdemo.azureedge.net/azuremediaplayer.html

【问题讨论】:

  • 请将您的代码放入您的问题中,而不是作为链接。
  • @JeroenHeier,完成!

标签: c# azure azure-active-directory azure-media-services


【解决方案1】:

最后我想出了如何解决这个问题。按照我做的步骤:

  1. 如果您不使用 azure 媒体服务资源管理器,请在此处获取:github.com/Azure/Azure-Media-Services-Explorer。这将使您更轻松地管理视频。
  2. 选择您的视频源并点击右键。选择“编码  使用媒体编码器标准 (MES) 编码资产”。

  3. 选择“内容自适应多比特率 MP4”并单击“启动编码”。 Img for step 3

  4. 工作完成后。右键单击生成的文件,然后选择“安全性  为资产添加动态加密和密钥传递策略”。 Img for step 4
  5. 选择保护“信封清除键” Img for step 5
  6. 接下来的步骤,使用默认值:第 2 步 - 自动生成,第 3 步 - 是,使用 1 个选项为内容密钥定义授权策略。
  7. 第三步,内容密钥的授权策略选项:Token。令牌类型:SWT – 简单 Web 令牌。令牌属性:填写发行者和受众。之后点击“确定” Img for step 7
  8. 在刚刚加密的视频上,右键单击并选择“发布  创建定位器”。保持选项不变,然后单击创建按钮。 Img for step 8
  9. 右键单击视频并单击“显示信息”或按 F4。
  10. 选择“内容键”选项卡,然后选择“内容信封”并保留“ID”和“限制要求”(TokenRestrictionTemplate XML)。 Img for step 10
  11. 播放媒体。右键单击视频,然后单击“播放  与 azure 媒体播放器”。当您要求时,单击“创建测试令牌”按钮。 Img for step 11
  12. 当浏览器打开时,查看“Protection Bearer”。您将在此字段中更新令牌。 Img for step 12
  13. 现在是 C# 代码(抱歉,我不知道为什么没有应用代码格式):

    string tokenTemplateString = "{{在此处粘贴您在第 10 步获得的 XML(限制要求)}}"; 令牌限制模板令牌模板 = TokenRestrictionTemplateSerializer.Deserialize(tokenTemplateString);
    string testToken = TokenRestrictionTemplateSerializer.GenerateTestToken(tokenTemplate, tokenTemplate.PrimaryVerificationKey, new Guid("在此处粘贴您在步骤 10 中获得的 ID。删除 "nb:kid:UUID:" 部分!"), DateTime.Now.AddHours(10 )); Console.WriteLine("授权令牌为:\nBearer {0}", testToken);

  14. 在第 12 步标记的字段中使用生成的令牌。不要忘记使用单词“Bearer”

【讨论】:

  • 这些步骤对于 AMS Explorer v3 有所改变,但功能仍然存在。现在有“安全”选项,但是右键单击->发布->清除密钥流->创建定位器有效地替换了第 4 步和第 5 步。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多