我正在尝试使用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);
如何设置此受众或资源或我做错了什么?
如何设置此受众或资源或我做错了什么?
我也可以在我身边重现这个问题。它似乎是SDK问题。你可以把它报告给Azure SDK github issue。
更新:
根据issue-4090的说法,它已经在版本1.7中得到修复,如果它被释放你可以再次测试。