我们正尝试使用托管身份从Azure Function(.Net 4.8)访问Azure Analisys Services,以检索有效令牌并向AAS进行身份验证。
这是我们正在使用的代码:
private static string GetToken()
{
return new AzureServiceTokenProvider().GetAccessTokenAsync($"https://{ConfigurationManager.AppSettings["AASSRegion"]}.asazure.windows.net", ConfigurationManager.AppSettings["TenantId"]).Result;
}
private static string GetConnectionString()
{
return $"Provider=MSOLAP;" +
$"Data Source=asazure://{ConfigurationManager.AppSettings["AASSRegion"]}.asazure.windows.net/{ConfigurationManager.AppSettings["AASSName"]}:rw;" +
$"Initial Catalog=Example;" +
$"Password={GetToken()};" +
$"Persist Security Info=True;" +
$"Impersonation Level=Impersonate";
}
执行后,我们获得一个有效的令牌并生成一个有效的connectionString,但是当我们尝试连接到AAS时,会收到以下500错误:
“ app:appid @ tenantid”用户无权访问“示例”数据库,或者该数据库不存在
(错误消息中应用程序和租户的ID均正确)
AAS中允许管理身份,并且已经正确配置了“ AASRegion”,“ AASName”和“ TenantId”的键。
appid在AAS中具有管理员权限,并在RBAC中扮演角色。
我们缺少什么?可以使用托管身份连接到AAS吗?
答案 0 :(得分:1)
已解决:问题在于,在AAS中,我们添加了受管理身份的对象ID,而不是应用程序ID。您可以在企业应用程序上看到这两者: