Azure SDK C#-获取自定义域验证ID

Azure SDK C#-获取自定义域验证ID,c#,azure,dns,sdk,verification,C#,Azure,Dns,Sdk,Verification,我需要从azure sdk获取“自定义域验证ID”。 我已经在azure sdk文档中查找了几个小时,但找不到它 api需要以编程方式设置自定义域,并提供正确的信息来设置第三方dns条目 自定义域验证ID对于azure来说似乎是新的。 是否有人知道如何从sdk获取它?如果您在为Azure app服务添加自定义域名时想要获取自定义域验证ID,我们可以使用来查询它 比如说 创建服务主体并将Azure RABC角色分配给sp(我使用Azure CLI) 代码 a。安装SDK Install-Pack

我需要从azure sdk获取“自定义域验证ID”。 我已经在azure sdk文档中查找了几个小时,但找不到它

api需要以编程方式设置自定义域,并提供正确的信息来设置第三方dns条目

自定义域验证ID对于azure来说似乎是新的。
是否有人知道如何从sdk获取它?

如果您在为Azure app服务添加自定义域名时想要获取自定义域验证ID,我们可以使用来查询它

比如说

  • 创建服务主体并将Azure RABC角色分配给sp(我使用Azure CLI)
  • 代码

    a。安装SDK

    Install-Package Microsoft.Identity.Client
    Install-Package Microsoft.Azure.Management.ResourceGraph
    
    b。代码

     string tenantId = "<>";
      string clientId = "<>";
      string authory = "https://login.microsoftonline.com/" + tenantId;
      string clientSecret = "<>";
      string subscriptionId = "<>";
      var app = ConfidentialClientApplicationBuilder.Create(clientId)
                  .WithClientSecret(clientSecret)
                  .WithAuthority(new Uri(authority))
                  .Build();
     string[] scopes = { "https://management.azure.com/.default" };
     var  result = await app.AcquireTokenForClient(scopes)
                  .ExecuteAsync();
    
      TokenCredentials tokenCredentials = new TokenCredentials(result.AccessToken,"Bearer");
      var resourceGraphClient = new ResourceGraphClient(tokenCredentials);
    
          var queryReq = new QueryRequest {
    
              Subscriptions = new List<string> { subscriptionId  },
              Query = "project name, properties.customDomainVerificationId, type | where type == 'microsoft.web/sites' | order by name asc"
    
          };
          var result1 = await resourceGraphClient.ResourcesAsync(queryReq);
          var r= (result1.Data as JObject).ToObject<Table>();
          Console.WriteLine(r.Columns[0].Name + "\t" + r.Columns[1].Name + "\t" + r.Columns[2].Name);
          foreach (var row in r.Rows) {
    
              for (int i = 0; i < row.Count; i++) {
                  Console.WriteLine(r.Columns[i].Name + ": " + row[i]);
    
              }
          }
    
    字符串tenantId=”“;
    字符串clientId=“”;
    字符串authory=”https://login.microsoftonline.com/“+租户;
    字符串clientSecret=“”;
    字符串subscriptionId=“”;
    var app=secretentialClientApplicationBuilder.Create(clientId)
    .WithClientSecret(clientSecret)
    .WithAuthority(新Uri(权限))
    .Build();
    字符串[]作用域={”https://management.azure.com/.default" };
    var result=wait app.AcquireTokenForClient(作用域)
    .ExecuteAsync();
    TokenCredentials TokenCredentials=新的TokenCredentials(result.AccessToken,“Bearer”);
    var resourceGraphClient=新的resourceGraphClient(令牌凭证);
    var queryReq=新QueryRequest{
    订阅=新列表{subscriptionId},
    Query=“项目名称,properties.customDomainVerificationId,类型|其中类型=='microsoft.web/sites'|按名称排序asc”
    };
    var result1=等待resourceGraphClient.ResourcesAsync(queryReq);
    var r=(result1.Data作为JObject.ToObject();
    Console.WriteLine(r.Columns[0].Name+“\t”+r.Columns[1].Name+“\t”+r.Columns[2].Name);
    foreach(r.Rows中的变量行){
    for(int i=0;i

  • 如果您想在为Azure应用程序服务添加自定义域名时获取自定义域验证ID,我们可以使用来查询它

    比如说

  • 创建服务主体并将Azure RABC角色分配给sp(我使用Azure CLI)
  • 代码

    a。安装SDK

    Install-Package Microsoft.Identity.Client
    Install-Package Microsoft.Azure.Management.ResourceGraph
    
    b。代码

     string tenantId = "<>";
      string clientId = "<>";
      string authory = "https://login.microsoftonline.com/" + tenantId;
      string clientSecret = "<>";
      string subscriptionId = "<>";
      var app = ConfidentialClientApplicationBuilder.Create(clientId)
                  .WithClientSecret(clientSecret)
                  .WithAuthority(new Uri(authority))
                  .Build();
     string[] scopes = { "https://management.azure.com/.default" };
     var  result = await app.AcquireTokenForClient(scopes)
                  .ExecuteAsync();
    
      TokenCredentials tokenCredentials = new TokenCredentials(result.AccessToken,"Bearer");
      var resourceGraphClient = new ResourceGraphClient(tokenCredentials);
    
          var queryReq = new QueryRequest {
    
              Subscriptions = new List<string> { subscriptionId  },
              Query = "project name, properties.customDomainVerificationId, type | where type == 'microsoft.web/sites' | order by name asc"
    
          };
          var result1 = await resourceGraphClient.ResourcesAsync(queryReq);
          var r= (result1.Data as JObject).ToObject<Table>();
          Console.WriteLine(r.Columns[0].Name + "\t" + r.Columns[1].Name + "\t" + r.Columns[2].Name);
          foreach (var row in r.Rows) {
    
              for (int i = 0; i < row.Count; i++) {
                  Console.WriteLine(r.Columns[i].Name + ": " + row[i]);
    
              }
          }
    
    字符串tenantId=”“;
    字符串clientId=“”;
    字符串authory=”https://login.microsoftonline.com/“+租户;
    字符串clientSecret=“”;
    字符串subscriptionId=“”;
    var app=secretentialClientApplicationBuilder.Create(clientId)
    .WithClientSecret(clientSecret)
    .WithAuthority(新Uri(权限))
    .Build();
    字符串[]作用域={”https://management.azure.com/.default" };
    var result=wait app.AcquireTokenForClient(作用域)
    .ExecuteAsync();
    TokenCredentials TokenCredentials=新的TokenCredentials(result.AccessToken,“Bearer”);
    var resourceGraphClient=新的resourceGraphClient(令牌凭证);
    var queryReq=新QueryRequest{
    订阅=新列表{subscriptionId},
    Query=“项目名称,properties.customDomainVerificationId,类型|其中类型=='microsoft.web/sites'|按名称排序asc”
    };
    var result1=等待resourceGraphClient.ResourcesAsync(queryReq);
    var r=(result1.Data作为JObject.ToObject();
    Console.WriteLine(r.Columns[0].Name+“\t”+r.Columns[1].Name+“\t”+r.Columns[2].Name);
    foreach(r.Rows中的变量行){
    for(int i=0;i

  • 谢谢你,吉姆。你的回答基本上有效,但我有一些小问题。我想他们可能改变了图书馆里的一些东西。我进行了重构,并使用了以下NuGet软件包:

    azure.identity v1.4.0
    microsoft.azure.management.fluent v1.37.1
    microsoft.azure.management.resourcegraph v2.1.0
    
    下面是我的代码解决方案:

        private static AzureCredentials GetAzureCredentials()
        {
            return SdkContext.AzureCredentialsFactory.FromServicePrincipal(
                Config.ClientId.ToString(), 
                Config.ClientSecret, 
                Config.TenantId.ToString(),
                AzureEnvironment.AzureGlobalCloud);
        }
    
        private static async Task<string> GetCustomDomainVerificationId(string webAppName)
        {
            var kql = "Resources"
                + " | where type == 'microsoft.web/sites' and name == '" + webAppName + "'"
                + " | project properties.customDomainVerificationId";
            return await QueryScalar(GetAzureCredentials(), kql);
        }
    
        private static async Task<string> QueryScalar(ServiceClientCredentials credentials, string kql)
        {
            var resourceGraphClient = new ResourceGraphClient(credentials);
            
            var formatAsTable = new QueryRequestOptions {ResultFormat = ResultFormat.Table};
            var queryRequest = new QueryRequest
            {
                Query = kql,
                Options = formatAsTable
            };
    
            var result = await resourceGraphClient.ResourcesAsync(queryRequest);
    
            var table = ((JObject) result.Data).ToObject<Table>();
            var row = table.Rows.SingleOrDefault();
            return row?[0].ToString();
        }
    
    私有静态AzureCredentials GetAzureCredentials()
    {
    从ServicePrincipal返回SdkContext.AzureCredentialsFactory.FromServicePrincipal(
    Config.ClientId.ToString(),
    Config.ClientSecret,
    Config.TenantId.ToString(),
    AzureEnvironment.AzureGlobalCloud);
    }
    私有静态异步任务GetCustomDomainVerificationId(字符串webAppName)
    {
    var kql=“资源”
    +“|其中类型=='microsoft.web/sites'和名称='”+webAppName+“”
    +“|项目属性.customDomainVerificationId”;
    return wait QueryScalar(GetAzureCredentials(),kql);
    }
    专用静态异步任务QueryScalar(ServiceClientCredentials凭据,字符串kql)
    {
    var resourceGraphClient=新的resourceGraphClient(凭证);
    var formatAsTable=newqueryrequestoptions{ResultFormat=ResultFormat.Table};
    var queryRequest=新queryRequest
    {
    Query=kql,
    选项=格式化表
    };
    var结果=等待resourceGraphClient.ResourcesSync(queryRequest);
    var table=((JObject)result.Data).ToObject();
    var row=table.Rows.SingleOrDefault();
    返回行?[0]。ToString();
    }
    
    谢谢吉姆。你的回答基本上有效,但我有一些小问题。我想他们可能改变了图书馆里的一些东西。我进行了重构,并使用了以下NuGet软件包:

    azure.identity v1.4.0
    microsoft.azure.management.fluent v1.37.1
    microsoft.azure.management.resourcegraph v2.1.0
    
    下面是我的代码解决方案:

        private static AzureCredentials GetAzureCredentials()
        {
            return SdkContext.AzureCredentialsFactory.FromServicePrincipal(
                Config.ClientId.ToString(), 
                Config.ClientSecret, 
                Config.TenantId.ToString(),
                AzureEnvironment.AzureGlobalCloud);
        }
    
        private static async Task<string> GetCustomDomainVerificationId(string webAppName)
        {
            var kql = "Resources"
                + " | where type == 'microsoft.web/sites' and name == '" + webAppName + "'"
                + " | project properties.customDomainVerificationId";
            return await QueryScalar(GetAzureCredentials(), kql);
        }
    
        private static async Task<string> QueryScalar(ServiceClientCredentials credentials, string kql)
        {
            var resourceGraphClient = new ResourceGraphClient(credentials);
            
            var formatAsTable = new QueryRequestOptions {ResultFormat = ResultFormat.Table};
            var queryRequest = new QueryRequest
            {
                Query = kql,
                Options = formatAsTable
            };
    
            var result = await resourceGraphClient.ResourcesAsync(queryRequest);
    
            var table = ((JObject) result.Data).ToObject<Table>();
            var row = table.Rows.SingleOrDefault();
            return row?[0].ToString();
        }
    
    私有静态AzureCredentials GetAzureCredentials()
    {
    从ServicePrincipal返回SdkContext.AzureCredentialsFactory.FromServicePrincipal(
    Config.ClientId.ToString(),
    Config.ClientSecret,
    Config.TenantId.ToString(),
    AzureEnvironment.AzureGlobalCloud);
    }
    私有静态异步任务GetCustomDomainVerificationId(字符串webAppName)
    {
    var kql=“资源”
    +“|其中type=='microsoft.web/sites'和name=='”+webAppNa