快速的背景,我是本地Azure开发的100%新手,我已经被带到了一个现有的项目中。我尝试过阅读有关此主题的MS文档,并且对Azure身份验证有了较高的了解,但经过广泛的研究后,我不知道如何解决这个问题。
我的问题是,当我下载源项目时,我的经理在Visual Studio中引导我完成了安装过程,以便我可以在本地构建和运行项目。第一步是转到Visual Studio中的Developer PowerShell并运行az login
,以本地登录到MS Azure。我这样做了,因为我的帐户有多个租户(一个是个人租户,另一个是我的客户委托给我的租户),所以这个过程返回了租户详细信息的列表,而不仅仅是一个租户登录。
当我们在我的机器上本地运行应用程序时,应用程序遇到了一个异常,代码如下:
builder.Configuration.AddAzureKeyVault(
new Uri("REDACTED"),
new DefaultAzureCredential());
我们发现,由于我有两个经过身份验证的租户,DefaultAzureCredential()
对象从登录过程中接收到的两个租户中选择了错误的租户,这两个租户缓存在我的开发机器上的某个地方。
我们需要做的是修改上面的代码,以指定与此项目关联的特定租户。当我手动使用az login
命令登录时,我可以看到它将JSON详细信息作为租户详细信息的集合输出到控制台。从这些细节中,我可以根据其各自的name
属性来判断我需要在项目中使用哪个租户。但是,我不知道如何获得这个本地租户列表,并通过name
搜索适当的租户,以便为应用程序获得相应的tenantId
。
如何在C#代码中访问和搜索这些缓存的详细信息?
对于上下文,这是一个Web API项目,并且在Program.cs
中启动时调用Azure身份验证设置。我不确定这是否重要,但这就是应用程序的设置方式。此外,需要明确的是,无论做出什么样的改变,都需要为当地的发展服务,也需要为生产部署服务。
2条答案
按热度按时间vohkndzv1#
您可以使用
DefaultAzureCredential(DefaultAzureCredentialOptions)
构造函数覆盖并在DefaultAzureCredentialOptions
中指定租户id。所以你的代码应该是这样的:6rqinv9w2#
我从你的帖子中了解到,你使用
az login
登录到你的帐户,但你有多个租户链接到该帐户,在你执行该命令后输出。如果这是真的,并且您想选择一个用作默认凭据源,则可以使用CLI中的下一个命令