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

在簡書中查看,請點擊我windows

關於相關內容解釋,請參考docs文檔 https://docs.microsoft.com/en-us/azure/media-services/previous/media-services-dotnet-get-started-with-aad
說明: 本步驟默認咱們已經有Azure訂閱,而且步驟是針對Global Azure,若是是China Mooncake請僅供參考。app

Step by Step:

  1. 登陸Azure Portal,建立Media Service服務。
    • 單擊All services,在搜索框中,鍵入Media Servicedom


      在All services中搜作Media Service
      在All services中搜作Media Service
    • 單擊Media Services,在Media Services,單擊+ Addide


      單擊+Add
      單擊+Add
    • 輸入Account Name, 選擇Resource Group或建立新Resource Group,選擇Location,選擇Storage Account,詳細信息略過...
    • 單擊Create
  2. 建立App。
    • 在左側服務列表中,單擊Azure Active Directoryspa


      在服務列表中,單擊Azure Active Directory
      在服務列表中,單擊Azure Active Directory
    • 選擇App registrations
    • 單擊New application registration3d


      單擊+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)code


      Application ID
      Application ID
    • 單擊Settings,在Settings中,選擇Keys
    • 在Passwords中,鍵入Key Description, 好比Key1,選擇duration,單擊Savexml


      輸入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 accessblog


      選擇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());
        }
    }
}
相關文章
相關標籤/搜索