Azure SDK C#-获取自定义域验证ID
我需要从azure sdk获取“自定义域验证ID”。 我已经在azure sdk文档中查找了几个小时,但找不到它 api需要以编程方式设置自定义域,并提供正确的信息来设置第三方dns条目 自定义域验证ID对于azure来说似乎是新的。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
是否有人知道如何从sdk获取它?如果您在为Azure app服务添加自定义域名时想要获取自定义域验证ID,我们可以使用来查询它 比如说
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,我们可以使用来查询它 比如说
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