使用 Azure SDK 在订阅级别进行身份验证

Authenticate at subscription level using Azure SDK

我正在尝试从订阅中获取应用服务列表,以便我可以使用 Azure SDK 筛选暂存站点并删除它们。我 运行 遇到了未正确验证或无法在订阅中看到任何资源的问题。

我在订阅中拥有“所有者”角色,因此我应该拥有对订阅及其资源的完全访问权限,但是在尝试遵循 Microsoft 的身份验证文档时 (https://docs.microsoft.com/en-us/dotnet/azure/sdk/authentication) 我可以' 似乎找到了一种在订阅级别进行身份验证的方法

这是我的代码:

                var azurecreds = SdkContext.AzureCredentialsFactory
                   .FromServicePrincipal(
                       "???",  //client ID
                       "???",  //client secret
                       "have this",  //tenant ID
                       AzureEnvironment.AzureGlobalCloud);

                var azure = Azure
                    .Configure()
                    .Authenticate(azurecreds)
                    .WithSubscription("have this");    //subscription ID

                //attempts with hard-coded values but not working
                var appServicePlans = azure.AppServices.AppServicePlans.List();
                var appServicePlans2 = azure.WebApps.List();
                var appServicePlans2 = azure.AppServices.AppServicePlans.ListByResourceGroup("Staging");

因为您正在关注此文档:Authenticate with token credentials

因此,根据上述文档,您必须使用此命令创建服务主体:

 az ad sp create-for-rbac --sdk-auth

创建此服务主体后,您将获得以下详细信息:

从上图中你必须复制ClientIDClient SecretTenantIDSubscriptionId。在您记下这些提到的细节之后,您可以将其放入代码中。

var azurecreds = SdkContext.AzureCredentialsFactory  
.FromServicePrincipal(  
"ClientID copied from the above step", //client ID  
"Client Secret Copied from the above step", //client secret  
"have this", //tenant ID  
AzureEnvironment.AzureGlobalCloud);

  

var azure = Azure  
.Configure()  
.Authenticate(azurecreds)  
.WithSubscription("have this"); //subscription ID

  

//attempts with hard-coded values but not working  
var appServicePlans = azure.AppServices.AppServicePlans.List();  
var appServicePlans2 = azure.WebApps.List();  
var appServicePlans2 = azure.AppServices.AppServicePlans.ListByResourceGroup("Staging");