是否可以使用 InteractiveBrowserCredential 对 Azure Management .NET SDK 进行身份验证?

Is it possible to authenticate Azure Management .NET SDK with InteractiveBrowserCredential?

我有一个用于为 Azure 构建资源的脚本。目前,我正在使用服务主体,但理想情况下我想使用我的 Active Directory 登录名,因为我们要向更多的开发人员开放脚本并希望可追溯性。是否可以使用 InteractiveBrowserCredential 来执行以下操作:

    var credential = await new InteractiveBrowserCredential(new InteractiveBrowserCredentialOptions {});

    var azure = Microsoft.Azure.Management.Fluent.Azure
      .Configure()
      .WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
      .Authenticate(new AzureCredentials(credential, AzureEnvironment.AzureGlobalCloud))
      .WithSubscription(subscriptionId);

    var webApp = await azure.WebApps.GetByResourceGroupAsync(resourceGroup, webAppName);

上面的脚本无法编译,因为 InteractiveBrowserCredentialAzureCredentials 之间没有转换。当我从 InteractiveBrowserControl 中提取令牌时,我从 Web 应用程序收到未经授权的响应。

我认为您需要使用新的 Azure SDK for .NET,它处于 public 预览版中,位于 Azure.Identity 之上 - 它支持 InteractiveBrowserCredential。文档可在 GitHub https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/resourcemanager/Azure.ResourceManager/README.md

上找到

精简版本是您现在将使用一个 ArmClient 对象,您使用该对象进行身份验证

ArmClient client = new ArmClient(new DefaultAzureCredential());

从那个客户端,你会得到一个 Subscription 对象,从中你会得到一个 ResourceGroup 对象,你可以从中操纵你想要的任何资源类型。