手把手:使用service principal连接Azure Media Service
在简书中查看,请点击我。
关于相关内容解释,请参考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:
- 登录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
- 创建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
- 配置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 domain和REST 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
- 创建.NET Desktop应用程序,以console Application为例,创建步骤略过。
- 在.NET项目中,添加引用。
右键单击项目,选择Manage NuGet Packages
选择Manage NuGet Packages- 在Browse中,输入windowsazure.mediaservices,单击Install
右键单击References,选择Add Reference
选择Add Reference- 搜索System.Configuration,并添加到项目中
- 打开App.config文件,添加如下代码
<appSettings>
<add key="AMSAADTenantDomain" value="{your AAD Tenant Domain}"/>
<add key="AMSRESTAPIEndpoint" value="{your REST API Endpoint}"/>
<add key="AMSClientId" value="{your Application ID}"/>
<add key="AMSClientSecret" value="{your Client secret}"/>
</appSettings>
注意: 请使用你记录下来的值替换{ }中的内容。
- 打开Program.cs,添加代码
- 添加using引用
using Microsoft.WindowsAzure.MediaServices.Client;
using System.Configuration;
- 定义变量
private static readonly string _AADTenantDomain = ConfigurationManager.AppSettings["AMSAADTenantDomain"];
private static readonly string _RESTAPIEndpoint = ConfigurationManager.AppSettings["AMSRESTAPIEndpoint"];
private static readonly string _AMSClientId = ConfigurationManager.AppSettings["AMSClientId"];
private static readonly string _AMSClientSecret = ConfigurationManager.AppSettings["AMSClientSecret"];
- 定义tokenCredentials变量和tokenProvide变量
AzureAdTokenCredentials tokenCredentials = new AzureAdTokenCredentials(_AADTenantDomain,
new AzureAdClientSymmetricKey(_AMSClientId, _AMSClientSecret),
AzureEnvironments.AzureCloudEnvironment);
var tokenProvider = new AzureAdTokenProvider(tokenCredentials);
- 定义CloudMediaContext对象
CloudMediaContext context = new CloudMediaContext(new Uri(_RESTAPIEndpoint), tokenProvider);
- 至此,我们已经创建了一个CloudMediaContext对象context,可以使用这个对象来访问Media Service中的资源,对资源进行Encode,publish等操作。
附录代码
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<appSettings>
<add key="AMSAADTenantDomain" value="{your AAD Tenant Domain}"/>
<add key="AMSRESTAPIEndpoint" value="{your REST API Endpoint}"/>
<add key="AMSClientId" value="{your Application ID}"/>
<add key="AMSClientSecret" value="{your Client secret}"/>
</appSettings>
</configuration>
注意: 请使用你记录下来的值替换{ }中的内容。
Program.cs
using System;
using System.Linq;
using Microsoft.WindowsAzure.MediaServices.Client;
using System.Configuration; namespace ConsoleApp4
{
class Program
{
private static readonly string _AADTenantDomain =
ConfigurationManager.AppSettings["AMSAADTenantDomain"];
private static readonly string _RESTAPIEndpoint =
ConfigurationManager.AppSettings["AMSRESTAPIEndpoint"];
private static readonly string _AMSClientId =
ConfigurationManager.AppSettings["AMSClientId"];
private static readonly string _AMSClientSecret =
ConfigurationManager.AppSettings["AMSClientSecret"];
static void Main(string[] args)
{
AzureAdTokenCredentials tokenCredentials = new AzureAdTokenCredentials(_AADTenantDomain,
new AzureAdClientSymmetricKey(_AMSClientId, _AMSClientSecret),
AzureEnvironments.AzureCloudEnvironment);
var tokenProvider = new AzureAdTokenProvider(tokenCredentials);
CloudMediaContext context = new CloudMediaContext(new Uri(_RESTAPIEndpoint), tokenProvider); var assets = context.Assets;
foreach (var item in assets)
{
Console.WriteLine(item.Name);
}
Console.ReadLine();
Console.WriteLine(context.StorageAccounts.First().Name.ToString());
}
}
}
手把手:使用service principal连接Azure Media Service的更多相关文章
- Azure Media Service (1) 使用OBS进行Azure Media Service直播
<Windows Azure Platform 系列文章目录> 今天正好有客户问如何使用OBS进行Azure Media Service直播,我这里简单介绍一下. 先决条件: 1. OBS ...
- Windows Azure Cloud Service (36) 在Azure Cloud Service配置SSL证书
<Windows Azure Platform 系列文章目录> 在某些时候,我们需要在Azure PaaS Cloud Service配置HTTPS连接.本章将介绍如何在本地创建证书,然后 ...
- AAD Service Principal获取azure user list (Microsoft Graph API)
本段代码是个通用性很强的sample code,不仅能够操作AAD本身,也能通过Azure Service Principal的授权来访问和控制Azure的订阅资源.(Azure某种程度上能看成是两个 ...
- 【Azure媒体服务 Azure Media Service】Azure Media Service中Stream Endpoint 说明 (流式处理终结点)
Azure 媒体服务是一个基于云的媒体工作流平台,用于生成需要编码.打包.内容保护和直播活动广播的解决方案. 在视频的直播,点播方案中,媒体服务的架构主要由三部分构成: 推流端,把本地视频或直播内容推 ...
- 【应用服务 App Service】在Azure App Service中使用WebSocket - PHP的问题 - 如何使用和调用
问题描述 在Azure App Service中,有对.Net,Java的WebSocket支持的示例代码,但是没有成功的PHP代码. 以下的步骤则是如何基于Azure App Service实现PH ...
- Azure Media Service
该视频来源于Build 2015, 视频比较老, 从演讲的角度看, 是个非常不错的演讲, 内容也很全面. Apr 27, 2015
- 如何将Azure DevOps中的代码发布到Azure App Service中
标题:如何将Azure DevOps中的代码发布到Azure App Service中 作者:Lamond Lu 背景 最近做了几个项目一直在用Azure DevOps和Azure App Servi ...
- 利用Meida Service的Java SDK来调用Azure Media Services的Index V2实现视频字幕自动识别
Azure Media Services新的Index V2 支持自动将视频文件中的语音自动识别成字幕文件WebVtt,非常方便的就可以跟Azure Media Player集成,将一个原来没字幕的视 ...
- Azure登陆的两种常见方式(user 和 service principal登陆)
通过Powershell 登陆Azure(Azure MoonCake为例)一般常见的有两种方式 1. 用户交互式登陆 前提条件:有一个AAD account 此种登陆方式会弹出一个登陆框,让你输入一 ...
随机推荐
- centos6.0和7.4默认网卡配置
6.0 vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" NM_CONTROLLED="yes&qu ...
- Echars使用
声明一个Echars: var myChart = echarts.init(document.getElementById(Id)); 给Echars添加参数: var option = { 参数 ...
- JavaScript中函数立即调用的写法
第一:在含数前面加一元运算符: //方法1 +function (i) { console.log('+'); }(1); //方法2 -function (i) { console.log('-' ...
- learning makefile 模式规则
- Qt 按名称查找子节点
TreeItem* TreeModel::GetItem(QStringList& list, TreeItem* parent ,int deep) { ).toString()) { if ...
- freemarker导出word档
1.word另存为xml:2.xml文件后缀名改成ftl:3.编写完整json字符串备用:4.修改ftl中动态字段为json中对应字段名:5.编写java代码自动生成word文件:(注意:换行用< ...
- php 面向对象二
多态: 多态就是多种形态:多态分为方法重写和方法重载,但是php不支持方法重载 重写: 子类和父类的方法名必须一致,严格标准要求参数必须一致,但是参数可以不一致 子类中覆盖的方法不能比父类的方法访问权 ...
- 分析logfilter+session
1.P132分析: long before = System.currentTimeMillis(); //返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1 ...
- 使用echart 做出数据折线图
代码如下: // 基于准备好的dom,初始化echarts图表var myChart = echarts.init(document.getElementById("main")) ...
- java基础知识—数组
1.数组:是一个变量,存储相同数据类型的一组数据. 2.数据的优点:减少代码量.易查找. 3.数组的使用步骤: 1)声明数组:int scores []: 2)开辟空间:scores = new in ...