美文网首页
手把手:使用service principal连接Azure M

手把手:使用service principal连接Azure M

作者: 阳光流影 | 来源:发表于2018-12-06 14:42 被阅读0次

    关于相关内容解释,请参考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文件,添加如下代码
      <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 M

          本文链接:https://www.haomeiwen.com/subject/lvxocqtx.html