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

时间:2018-02-22 14:18:12

标签: c# azure azure-management-api azure-msi

我正在尝试使用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应用程序的托管服务标识。我已经制作了这个网络应用程序"所有者" 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);

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

1 个答案:

答案 0 :(得分:1)

  

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

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

<强>更新

根据issue-4090,它已在版本1.7中修复,如果它被释放,您可以再次测试。