手把手:使用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 在All services中搜做Media Service
- 单击Media Services,在Media Services,单击+ Add  单击+Add 单击+Add
- 输入Account Name, 选择Resource Group或创建新Resource Group,选择Location,选择Storage Account,详细信息略过...
- 单击Create
 
- 创建App。
- 在左侧服务列表中,单击Azure Active Directory  在服务列表中,单击Azure Active Directory 在服务列表中,单击Azure Active Directory
- 选择App registrations
- 单击New application registration  单击+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 Application ID
 
- 单击Settings,在Settings中,选择Keys
- 在Passwords中,键入Key Description, 比如Key1,选择duration,单击Save  输入Key1,选择duration,单击Save 输入Key1,选择duration,单击Save
- 保存完成以后,记录下Value的值 (稍后,这个值在Desktop程序中用到,它在App.config中的变量名是AMSClientSecret)  Client Secret Client Secret
 
- 配置Media Service使用service principal连接。
- 在All resources中,选择刚创建的media service
- 选择API access  选择API access 选择API access
 
- 单击Connect to Azure Media Services API with service principal  单击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 关联Azure AD app
- 在Connect to Media Services API with service principal中,单击Save
 
- 创建.NET Desktop应用程序,以console Application为例,创建步骤略过。
- 在.NET项目中,添加引用。
- 右键单击项目,选择Manage NuGet Packages  选择Manage NuGet Packages 选择Manage NuGet Packages
- 在Browse中,输入windowsazure.mediaservices,单击Install
- 右键单击References,选择Add Reference  选择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 此种登陆方式会弹出一个登陆框,让你输入一 ... 
随机推荐
- 为二级域名注册ssl证书,并强制使用https对http进行跳转
			服务器上仍然使用nginx进行代理 1.为二级域名申请ssl证书,如blog.yourdomain.com,见前文. 2.在域名解析服务中,为二级域名添加解析记录 3.nginx默认读取/etc/ng ... 
- jQuery和Vue的区别
			1.jQuery和Vue的区别 jQuery是使用选择器($)选取DOM对象,对其进行赋值.取值.事件绑定等操作,其实和原生的HTML的区别只在于可以更方便的选取和操作DOM对象,而数据和界面是在一起 ... 
- mysql  <=> null 问题
			SELECT * FROM cms_user WHERE age=NULL; Empty set (0.03 sec) 查询表中记录age值为null mysql> SELECT * FROM ... 
- ubuntu安装smartGit
			1.首先安装jdk:(http://www.cnblogs.com/xiaochou/p/install_mint.html 评论区) 2.下载和安装smartGit: http://www.synt ... 
- bzoj1688
			题解: 暴力枚举生哪一些病 然后判断一下即可 代码: #include<bits/stdc++.h> using namespace std; ,D=; int d,k,n,a[N][D] ... 
- [Oracle][DATAGUARD] PHYSICAL STANDBY环境里,使用CATALOG管理Primary和Standby
			1.先使用控制文件构筑好PHYSICAL STANDBY环境(Primary:Single 11.2.0.4,Standby Single 11.2.0.4) 2.构筑好Catalog用的服务器(Ca ... 
- python 常用网站
			https://www.tutorialgateway.org/python-tutorial/ 
- 使用spring:aop中修改增强方法中的参数
			大家都知道,在增强方法中,使用jp.getArgs()[index]可以获取传进来的参数,但是参数传进来之后,怎么改变它的值呢? 因为jp.getArgs()[index]获取到的只是数据的备份,所以 ... 
- 1	实现添加功能 	1.1	定义一个学员类(Student),在Student类中定义姓名、性别和年龄属性,定义有	参数的构造方法来初始化所以的成员属性 	1.2	创建学员类对象来存放学员信息,并且为每一个学生对象添加的相应的编号。并将	学员类对象添加到Map<Integer,Student>集合中 	1.3	添加完成后,显示所有已添加的学员姓名 	1.4	限制年龄文本框只能输入正整数,否则的会采
			学生类 package com.lanxi.demo1_3; public class Student { private String name; private String sex; priva ... 
- java解析HTML之神器------Jsoup
			背景:公司项目要对接第三方商城的商品到自己的商城来卖,商品详情给了个链接url,因为对方的商品详情有他们的物流说明,售后信息,所以要求去掉这部分的代码 @Test public void getIte ... 
