从Azure Web App托管服务标识创建资源组

问题描述 投票:2回答:1

我正在尝试使用MS Bot框架构建一个Bot,并且该bot作为Azure Web App托管。我添加了使用Microsoft.Azure.Management.Fluent API创建资源组的代码

AzureCredentialsFactory f = new AzureCredentialsFactory();
var msi = new MSILoginInformation(MSIResourceType.AppService);

var msiCred = f.FromMSI(msi, AzureEnvironment.AzureGlobalCloud);

var azureAuth = Azure.Configure()
                 .WithLogLevel(HttpLoggingDelegatingHandler.Level.BodyAndHeaders)
                 .Authenticate(msiCred);

var azure = azureAuth.WithSubscription(subscription);

var resourceGroup = azure.ResourceGroups.Define(rg)
                                    .WithRegion(Region.EuropeWest)
                                    .Create();

此代码正在利用Web应用程序的托管服务标识。我已经使这个Web应用程序成为Azure订阅的“所有者”。

当我执行此代码时,我一直得到这个例外

例外:访问令牌是从错误的受众或资源'https://management.core.windows.net'获得的。它应该与允许的观众之一'https://management.core.windows.net/','https://management.azure.com/'完全匹配(包括正斜杠)。

我从不手动设置观众或资源,也没有看到如何做到这一点的任何选项。

当我改变我的代码以使用我自己创建的服务主体时,它工作得很好

ServicePrincipalLoginInformation loginInfo = new ServicePrincipalLoginInformation() 
{ 
    ClientId = _clientId, 
    ClientSecret = _clientSecret 
}; 

var credentials = new AzureCredentials(loginInfo, _tenantId, AzureEnvironment.AzureGlobalCloud);
var azureAuth = Azure.Configure()
             .WithLogLevel(HttpLoggingDelegatingHandler.Level.BodyAndHeaders)
             .Authenticate(credentials);

如何设置此受众或资源或我做错了什么?

c# azure azure-management-api azure-msi
1个回答
1
投票

如何设置此受众或资源或我做错了什么?

我也可以在我身边重现这个问题。它似乎是SDK问题。你可以把它报告给Azure SDK github issue

更新:

根据issue-4090的说法,它已经在版本1.7中得到修复,如果它被释放你可以再次测试。

© www.soinside.com 2019 - 2024. All rights reserved.