gpt4 book ai didi

c# - 如何将 AzureDefaultCredentials 与 Azure Fluent 结合使用?

转载 作者:行者123 更新时间:2023-12-02 05:52:44 24 4
gpt4 key购买 nike

我正在尝试用 C# 创建一个重新生成存储 key 的 Azure 函数。我正在努力寻找正确的 .NET 库,以便我可以在其中进行身份验证并重新生成 key 。

我发现的最简单的身份验证方法是使用 DefaultAzureCredentials 并将其传递给 BlobClient。但我在 BlobClient 上的任何位置都找不到重新生成 key 的选项。

我发现在存储帐户上重新生成 key 的唯一方法是使用 Microsoft.Azure.Management.Fluent,但 Fluent API 不支持 DefaultAzureCredentials。相反,我认为我需要使用 SdkContext.AzureCredentialsFactory ,它没有 DefaultCredentials 所具有的托管身份和 VS Code 的自动回退功能。

  • 是否有某种方法可以使用 BlobClient 重新生成 key ,以便我可以使用 DefaultAzureCredentials
  • 或者有没有办法将 DefaultAzureCredentials 与 Fluent API 结合使用?

最佳答案

这是我刚刚使用 .NET 5.0 的另一个变体。它使用 DefaultAzureCredential 并将其转换为 AzureCredentials 实例。作为测试,它随后查询默认订阅中的 ACR 实例列表并打印它们的名称。如果您正在使用一个或多个已支持 DefaultAzureCredential 的其他库,则此变体非常有用。

using System;
using Azure.Core;
using Azure.Identity;
using Microsoft.Azure.Management.ResourceManager.Fluent;

namespace Program
{
class Program
{
static void Main(string[] args)
{
var defaultCredential = new DefaultAzureCredential();
var defaultToken = defaultCredential.GetToken(new TokenRequestContext(new[] { "https://management.azure.com/.default" })).Token;
var defaultTokenCredentials = new Microsoft.Rest.TokenCredentials(defaultToken);
var azureCredentials = new Microsoft.Azure.Management.ResourceManager.Fluent.Authentication.AzureCredentials(defaultTokenCredentials, defaultTokenCredentials, null, AzureEnvironment.AzureGlobalCloud);
var azure = Microsoft.Azure.Management.Fluent.Azure.Configure().Authenticate(azureCredentials).WithDefaultSubscription();
var acrList = azure.ContainerRegistries.List();
foreach (var acr in acrList)
{
Console.WriteLine(acr.Name);
}
}
}
}

来源和灵感:

更新:正如 Simon Opelt 在他们的评论中完全正确地指出的那样:对于长时间运行的流程(例如服务), token 确实会过期,并且需要处理它们的续订。我的示例来自 Azure Function App,最多运行 10 分钟。

关于c# - 如何将 AzureDefaultCredentials 与 Azure Fluent 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66367607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com