手把手:使用service principal连接Azure Media Service

摘要:
StepbyStep:登录Azure门户并创建MediaService服务。在Allresources中,选择刚刚创建的媒体服务,选择APIaccess,选择APIaccess,单击ConnecttoAzureMediaServicesAPI with serviceprincipal,单击Connectto AzureMediaServicesAPI with serviceprioripal,在AzureADApplication中记录AzureActiveDirectorytenantdomain和RESTAPEndpoint的值,选择SelectExisting,单击AzureADapp,然后在AzureADapplications中,输入步骤2中记录的应用程序的名称,选择找到的应用程序,然后单击“确定”以关联AzureADapp。在使用serviceprincipal连接到媒体服务API中,单击保存以创建.NET桌面应用程序。以consoleApplication为例,将跳过创建步骤。

在简书中查看,请点击我

关于相关内容解释,请参考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
      在All services中搜做Media Service
    • 单击Media Services,在Media Services,单击+ Add


      单击+Add
      单击+Add
    • 输入Account Name, 选择Resource Group或创建新Resource Group,选择Location,选择Storage Account,详细信息略过...
    • 单击Create
  2. 创建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
  1. 配置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 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
      关联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
      选择Manage NuGet Packages
    • 在Browse中,输入windowsazure.mediaservices,单击Install
    • 右键单击References,选择Add Reference


      选择Add Reference
      选择Add Reference
    • 搜索System.Configuration,并添加到项目中
  3. 打开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>

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

  1. 打开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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇springboot使用druid连接池连接Oracle数据库的基本配置Java使用POI解析Excel表格下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Visual Studio 2013发布Cloud Service至Azure China

Visual Studio 2013发布Cloud Service至Azure China 《Windows Azure Platform 系列文章目录》   之前有很多网友询问我如何通过VS发布Cloud Service至Azure China,这里我专门写篇文章,给大家详细介绍下。   笔者使用的是VS2013,首先我们下载Windows Azure...

Azure DevOps Server 2020 (原名TFS)安装说明

1. 概述 Azure DevOps Server(原名TFS)是微软研发管理平台产品,是实现软件运维一体化(DevOps)的实施方案,是敏捷开发方法论在研发团队中的落地工具,是微软研发大数据管理系统。 根据企业当前软件研发管理的实际情况,结合Azure DevOps Server的自身功能,可以协助企业在软件质量和开发效率上实现双提升,可以建立起规范统一...

现在可用——Windows Azure SDK 1.6

微软不久前宣布了Windows Azure SDK 1.6 和 Windows Azure Tools for Visual Studio 1.6的发布。现在人们可以通过WebPI来下载这个最新版本。 当你下载并安装完该SDK时,你将发现 该SDK 1.6与SDK 1.5兼容,这意味着你仍然可以使用1.5版的程序集。但是Visual Studio To...

【Azure 应用服务】Azure Function App Linux环境下的Python Function,安装 psycopg2 模块错误

问题描述 在Azure中创建Function App(函数应用), 用以运行Python代码(Python Version 3.7)。 通过VS Code创建一个HttpTrigger的Function,其中使用到了psycopg2 模块,以便连接Azure Database for PostgreSQL 数据库 当通过VS Code发布到Azure后,...

最全的Windows Azure学习教程汇总

Windows Azure 是微软基于云计算的操作系统,能够为开发者提供一个平台,帮助开发可运行在云服务器、数据中心、Web 和 PC 上的应用程序。 Azure 是一种灵活和支持互操作的平台,能够将处于云端的开发者个人能力,同微软全球数据中心网络托管的服务,比如存储、计算和网络基础设施服务,紧密结合起来。帮助开发者在“云端”和“客户端”同时部署应用,使得...

【Azure Redis 缓存】Azure Cache for Redis 中如何快速查看慢指令情况(Slowlogs)

问题描述当 Azure Redis 服务器负载过高的情况下,使用时就会遇见连接超时,命令超时,IO Socket超时等异常。为了能定位是那些因素引起的,可以参考微软官方文档( 管理 Azure Cache for Redis 的服务器负载 : https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-b...