在简书中查看,请点击我

关于相关内容解释,请参考docs文档 https://docs.microsoft.com/en-us/azure/media-services/previous/media-services-dotnet-get-started-with-aad
说明: 本步骤默认我们已经有Azure订阅,并且步骤是针对Global Azure,如果是China Mooncake请仅供参考。

Step by Step:

  1. 登录Azure Portal,创建Media Service服务。

    • 单击All services,在搜索框中,键入Media Service

      在All services中搜做Media Service
    • 单击Media Services,在Media Services,单击+ Add

      单击+Add
    • 输入Account Name, 选择Resource Group或创建新Resource Group,选择Location,选择Storage Account,详细信息略过...
    • 单击Create
  2. 创建App。
    • 在左侧服务列表中,单击Azure Active Directory

      在服务列表中,单击Azure Active Directory
    • 选择App registrations
    • 单击New application registration

      单击+New application registration
    • 输入Name, Application type选择Web app/API, Sign-on URL,随便输入一个,比如http://www.contoso.com
    • 单击Create
    • 在App registrations中, 选择刚刚创建的app
    • 记录下app的名字,Application ID等信息 (稍后,Application ID在Desktop程序中用到,它在App.config中的变量名是AMSClientId)

      Application ID
    • 单击Settings,在Settings中,选择Keys
    • 在Passwords中,键入Key Description, 比如Key1,选择duration,单击Save

      输入Key1,选择duration,单击Save
    • 保存完成以后,记录下Value的值 (稍后,这个值在Desktop程序中用到,它在App.config中的变量名是AMSClientSecret)

      Client Secret
  1. 配置Media Service使用service principal连接。

    • 在All resources中,选择刚创建的media service
    • 选择API access

      选择API access
    • 单击Connect to Azure Media Services API with service principal

      单击Connect to Azure Media Services API with service principal
    • 记录下Azure Active Directory tenant domainREST API endpoint的值 (稍后,这两个信息在Desktop程序中用到,它在App.config中的变量名分别是AMSAADTenantDomain和AMSRESTAPIEndpoint)
    • 在Azure AD Application中,选择Select Existing
    • 单击Azure AD app,在Azure AD applications中,输入在步骤2中记录下的app的名字
    • 选择找到的app,并单击OK

      关联Azure AD app
    • 在Connect to Media Services API with service principal中,单击Save
  1. 创建.NET Desktop应用程序,以console Application为例,创建步骤略过。
  2. 在.NET项目中,添加引用。
    • 右键单击项目,选择Manage NuGet Packages

      选择Manage NuGet Packages
    • 在Browse中,输入windowsazure.mediaservices,单击Install
    • 右键单击References,选择Add Reference

      选择Add Reference
    • 搜索System.Configuration,并添加到项目中
  3. 打开App.config文件,添加如下代码
  1. <appSettings>
  2. <add key="AMSAADTenantDomain" value="{your AAD Tenant Domain}"/>
  3. <add key="AMSRESTAPIEndpoint" value="{your REST API Endpoint}"/>
  4. <add key="AMSClientId" value="{your Application ID}"/>
  5. <add key="AMSClientSecret" value="{your Client secret}"/>
  6. </appSettings>

注意: 请使用你记录下来的值替换{ }中的内容。

  1. 打开Program.cs,添加代码
    • 添加using引用
  1. using Microsoft.WindowsAzure.MediaServices.Client;
  2. using System.Configuration;
    • 定义变量
  1. private static readonly string _AADTenantDomain = ConfigurationManager.AppSettings["AMSAADTenantDomain"];
  2. private static readonly string _RESTAPIEndpoint = ConfigurationManager.AppSettings["AMSRESTAPIEndpoint"];
  3. private static readonly string _AMSClientId = ConfigurationManager.AppSettings["AMSClientId"];
  4. private static readonly string _AMSClientSecret = ConfigurationManager.AppSettings["AMSClientSecret"];
    • 定义tokenCredentials变量和tokenProvide变量
  1. AzureAdTokenCredentials tokenCredentials = new AzureAdTokenCredentials(_AADTenantDomain,
  2. new AzureAdClientSymmetricKey(_AMSClientId, _AMSClientSecret),
  3. AzureEnvironments.AzureCloudEnvironment);
  4. var tokenProvider = new AzureAdTokenProvider(tokenCredentials);
    • 定义CloudMediaContext对象
  1. CloudMediaContext context = new CloudMediaContext(new Uri(_RESTAPIEndpoint), tokenProvider);
    • 至此,我们已经创建了一个CloudMediaContext对象context,可以使用这个对象来访问Media Service中的资源,对资源进行Encode,publish等操作。

附录代码

App.config

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <startup>
  4. <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
  5. </startup>
  6. <appSettings>
  7. <add key="AMSAADTenantDomain" value="{your AAD Tenant Domain}"/>
  8. <add key="AMSRESTAPIEndpoint" value="{your REST API Endpoint}"/>
  9. <add key="AMSClientId" value="{your Application ID}"/>
  10. <add key="AMSClientSecret" value="{your Client secret}"/>
  11. </appSettings>
  12. </configuration>

注意: 请使用你记录下来的值替换{ }中的内容。

Program.cs

  1. using System;
  2. using System.Linq;
  3. using Microsoft.WindowsAzure.MediaServices.Client;
  4. using System.Configuration;
  5.  
  6. namespace ConsoleApp4
  7. {
  8. class Program
  9. {
  10. private static readonly string _AADTenantDomain =
  11. ConfigurationManager.AppSettings["AMSAADTenantDomain"];
  12. private static readonly string _RESTAPIEndpoint =
  13. ConfigurationManager.AppSettings["AMSRESTAPIEndpoint"];
  14. private static readonly string _AMSClientId =
  15. ConfigurationManager.AppSettings["AMSClientId"];
  16. private static readonly string _AMSClientSecret =
  17. ConfigurationManager.AppSettings["AMSClientSecret"];
  18. static void Main(string[] args)
  19. {
  20. AzureAdTokenCredentials tokenCredentials = new AzureAdTokenCredentials(_AADTenantDomain,
  21. new AzureAdClientSymmetricKey(_AMSClientId, _AMSClientSecret),
  22. AzureEnvironments.AzureCloudEnvironment);
  23. var tokenProvider = new AzureAdTokenProvider(tokenCredentials);
  24. CloudMediaContext context = new CloudMediaContext(new Uri(_RESTAPIEndpoint), tokenProvider);
  25.  
  26. var assets = context.Assets;
  27. foreach (var item in assets)
  28. {
  29. Console.WriteLine(item.Name);
  30. }
  31. Console.ReadLine();
  32. Console.WriteLine(context.StorageAccounts.First().Name.ToString());
  33. }
  34. }
  35. }

手把手:使用service principal连接Azure Media Service的更多相关文章

  1. Azure Media Service (1) 使用OBS进行Azure Media Service直播

    <Windows Azure Platform 系列文章目录> 今天正好有客户问如何使用OBS进行Azure Media Service直播,我这里简单介绍一下. 先决条件: 1. OBS ...

  2. Windows Azure Cloud Service (36) 在Azure Cloud Service配置SSL证书

    <Windows Azure Platform 系列文章目录> 在某些时候,我们需要在Azure PaaS Cloud Service配置HTTPS连接.本章将介绍如何在本地创建证书,然后 ...

  3. AAD Service Principal获取azure user list (Microsoft Graph API)

    本段代码是个通用性很强的sample code,不仅能够操作AAD本身,也能通过Azure Service Principal的授权来访问和控制Azure的订阅资源.(Azure某种程度上能看成是两个 ...

  4. 【Azure媒体服务 Azure Media Service】Azure Media Service中Stream Endpoint 说明 (流式处理终结点)

    Azure 媒体服务是一个基于云的媒体工作流平台,用于生成需要编码.打包.内容保护和直播活动广播的解决方案. 在视频的直播,点播方案中,媒体服务的架构主要由三部分构成: 推流端,把本地视频或直播内容推 ...

  5. 【应用服务 App Service】在Azure App Service中使用WebSocket - PHP的问题 - 如何使用和调用

    问题描述 在Azure App Service中,有对.Net,Java的WebSocket支持的示例代码,但是没有成功的PHP代码. 以下的步骤则是如何基于Azure App Service实现PH ...

  6. Azure Media Service

    该视频来源于Build 2015, 视频比较老, 从演讲的角度看, 是个非常不错的演讲, 内容也很全面. Apr 27, 2015

  7. 如何将Azure DevOps中的代码发布到Azure App Service中

    标题:如何将Azure DevOps中的代码发布到Azure App Service中 作者:Lamond Lu 背景 最近做了几个项目一直在用Azure DevOps和Azure App Servi ...

  8. 利用Meida Service的Java SDK来调用Azure Media Services的Index V2实现视频字幕自动识别

    Azure Media Services新的Index V2 支持自动将视频文件中的语音自动识别成字幕文件WebVtt,非常方便的就可以跟Azure Media Player集成,将一个原来没字幕的视 ...

  9. Azure登陆的两种常见方式(user 和 service principal登陆)

    通过Powershell 登陆Azure(Azure MoonCake为例)一般常见的有两种方式 1. 用户交互式登陆 前提条件:有一个AAD account 此种登陆方式会弹出一个登陆框,让你输入一 ...

随机推荐

  1. cron 配置

    一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素. 按顺序依次为 秒(0~59) 分钟(0~59) 小时(0~23) 天(月)(0~31,但是你需要考虑你月的天数) 月(0~11) 天( ...

  2. Linux getopt/getopts解析命令行参数教程

    一.说明 shell中获取参数可以直接使用$1.$2等形式来获取,但这种方式有明显的限制:每个参数的位置是固定的.比如如果在设计上$1是ip地址$2是端口,那在执行时就必须第一个参数是ip第二个参数是 ...

  3. redis安装,windows,linux版本并部署服务

    一.使用场景         项目中采用数据库访问量过大或访问过于频繁,将会对数据库带来很大的压力.redis数据库是以非关系数据库的出现,后来redis的迭代版本支持了缓存数据.登录session状 ...

  4. linux服务器用nginx做网站内页之间301的跳转方法

    例: 要将这个页面 /topic/show-228-1.html 做301跳转到 /dance/topic-show-228-1.html nginx的伪静态规则就这样写: rewrite ^/top ...

  5. unity 中让Text的文字动态刷新形式

    第一种刷新文字形式 using UnityEngine; using System.Collections; using UnityEngine.UI; public class SensorText ...

  6. python修炼第六天

    越来越难了....现在啥也不想说了,撸起袖子干. 1 面向对象 先来个例子: 比如人狗大战需要有狗,人所以创建两个类别模子def Person(name,sex,hp,dps): dic = {&qu ...

  7. JavaScript常用数组操作方法,包含ES6方法

    一.concat() concat() 方法用于连接两个或多个数组.该方法不会改变现有的数组,仅会返回被连接数组的一个副本. var arr1 = [1,2,3]; var arr2 = [4,5]; ...

  8. idea提交项目到码云上

    参考 https://www.cnblogs.com/BaleW/p/9293184.html

  9. cocoaPods安装爬坑总结

    1.移除现有Ruby默认源 $ gem sources --remove https://rubygems.org/   2.使用新的源 $ gem sources -a https://ruby.t ...

  10. mybatis源码解析之Configuration加载(三)

    概述 上一篇我们主要分析了下<environments>标签下面,transactionManager的配置,上问最后还有个遗留问题:就是在设置事物管理器的时候有个autocommit的变 ...