Маркер AAD служб мультимедиа Azure C#

В настоящее время мне очень трудно интегрировать AAD с Azure Media Services. Мне нужно получить токен носителя из AAD, а затем передать этот токен в проигрыватель мультимедиа Azure для воспроизведения зашифрованного видео, но я всегда получаю следующую ошибку: Невозможно расшифровать зашифрованный источник видео. (0x20500004).

Вот два фрагмента кода, который я использую. Код С#:

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# с 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

Ссылка на Azure Player: https://ampdemo.azureedge.net/azuremediaplayer.html.


person user2921033    schedule 16.07.2018    source источник
comment
Пожалуйста, поместите свой код внутри вашего вопроса, а не в виде ссылки.   -  person Jeroen Heier    schedule 16.07.2018
comment
@JeroenHeier, готово!   -  person user2921033    schedule 16.07.2018


Ответы (1)


Наконец-то я понял, как решить эту проблему. Следуйте шагам, которые я сделал:

  1. Если вы не используете обозреватель служб мультимедиа Azure, скачайте его здесь: github.com/Azure/Azure-Media-Services-Explorer. Это облегчит вам жизнь при управлении видео.
  2. Выберите источник видео и нажмите на него правой кнопкой. Выберите «Кодировать  Кодировать ресурсы с помощью Media Encoder Standard (MES)».

  3. Выберите Content Adaptive Multiple Bitrate MP4 и нажмите «Запустить кодирование». Изображение шага 3

  4. После того, как работа сделана. Щелкните правой кнопкой мыши в сгенерированном файле и выберите «Безопасность  Добавить политику динамического шифрования и доставки ключей для актива (ов)». Изображение шага 4
  5. Выберите защиту «Ключ очистки конверта» Изображение для шага 5
  6. Следующие шаги, используйте значение по умолчанию: Шаг 2 — Автоматическая генерация, Шаг 3 — Да, определите политику авторизации для ключа содержимого с 1 параметром (ами).
  7. Шаг 3, вариант политики авторизации ключа содержимого: токен. Тип токена: SWT — простой веб-токен. Свойства токена: заполните как эмитента, так и аудиторию. После этого нажмите «ОК» Изображение для шага 7
  8. На только что зашифрованном видео щелкните правой кнопкой мыши и выберите «Опубликовать → Создать локатор». Оставьте параметры как есть и нажмите кнопку «Создать». Изображение шага 8
  9. Щелкните правой кнопкой мыши на видео и выберите «Показать информацию» или нажмите F4.
  10. Выберите вкладку «Ключи содержимого», затем выберите «Конверт содержимого» и сохраните «ID» и «требования ограничения» (TokenRestrictionTemplate XML). Изображение шага 10
  11. Воспроизведение медиа. Щелкните видео правой кнопкой мыши и выберите «Воспроизведение  с помощью медиаплеера Azure». Нажмите на кнопку «Создать тестовый токен», когда вас попросили. Изображение шага 11
  12. Когда браузер откроется, взгляните на «Носитель защиты». В этом поле вы будете обновлять токен. Изображение шага 12
  13. Теперь код C# (извините, я не знаю, почему формат кода не был применен):

    string tokenTemplateString = "{{Вставьте сюда XML-код, полученный на шаге 10 (Требования к ограничениям)}}"; TokenRestrictionTemplate tokenTemplate = TokenRestrictionTemplateSerializer.Deserialize(tokenTemplateString);
    string testToken = TokenRestrictionTemplateSerializer.GenerateTestToken(tokenTemplate, tokenTemplate.PrimaryVerificationKey, new Guid("Вставьте сюда идентификатор, полученный на шаге 10. Удалите "nb:kid:UUID: "часть!"), DateTime.Now.AddHours(10)); Console.WriteLine("Токен авторизации:\nBearer {0}", testToken);

  14. Используйте сгенерированный токен в поле, отмеченном на шаге 12. Не забудьте использовать слово «Bearer»

person user2921033    schedule 20.07.2018
comment
Эти шаги несколько изменились для AMS Explorer v3, но функциональность осталась. теперь есть параметр «Безопасность», однако правой кнопкой мыши->Опубликовать->Очистить ключ Потоковая передача->Создать локатор эффективно заменяет шаги 4 и 5. - person Paul Hodgson; 06.11.2019