#azure #azure-functions #azure-analysis-services #azure-managed-identity
#azure #azure-функции #azure-analysis-services #azure-managed-identity
Вопрос:
Мы пытаемся получить доступ из функции Azure (.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"]).Resu<
}
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";
}
После выполнения мы получаем действительный токен и генерируем действительную строку подключения, но когда мы пытаемся подключиться к AAS, мы получаем следующую ошибку 500:
Либо пользователь, ‘app:appid@tenantid ‘, не имеет доступа к базе данных ‘Example’, или база данных не существует
(В сообщении об ошибке указаны правильные идентификаторы приложения и клиента)
Управляемая идентификация разрешена в AAS, а ключи «AASRegion», «AASName» и «TenantId» хорошо настроены.
Appid имеет права администратора в роли AAS и участника RBAC.
Чего нам не хватает? Возможно ли подключиться к AAS с использованием управляемой идентификации?
Комментарии:
1. Пожалуйста, обратитесь к статье: endjin.com/blog/2020/02 /…
2. Спасибо @JimXu, это статья, которую мы прочитали для реализации нашего решения.
Ответ №1:
Решаемая: проблема заключалась в том, что в AAS мы добавляем идентификатор объекта управляемой идентификации вместо идентификатора приложения. Вы можете увидеть оба в корпоративном приложении: