Назначенные пользователем удостоверения с помощью службы приложений и Azure SQL это работает? - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь подключить службу приложений к базе данных Azure Sql. Я могу git хорошо работать с Системными Назначенными Идентификациями с тем же кодом, но я предпочитаю использовать Пользовательские Идентификации (UAI), но я не могу заставить его работать.

Шаги, которые я делаю:

  1. Создание UAI через портал с именем UAI "uai-dev-appname-001"
  2. На вкладке «Идентификация» службы приложений Azure я выбрал «Назначенный пользователем идентификатор» и выбрал UAI, сделанный на предыдущем шаге.
  3. Запустил следующий SQL CMD
CREATE USER [uai-dev-appname-001] FROM EXTERNAL PROVIDER
ALTER ROLE db_datareader ADD MEMBER [uai-dev-appname-001]
ALTER ROLE db_datawriter ADD MEMBER [uai-dev-appname-001]
Установить строку подключения в ASP. NET на:

Источник данных = sqlsrv-name-dev-001.database. windows .net; Исходный каталог = sqldb-name-dev-001;

Использование следующего кода в моем ASP. NET Core:
SqlConnection connection = new SqlConnection
{
   ConnectionString = configuration.GetConnectionString("nameDatabase")
};
AzureServiceTokenProvider provider = new AzureServiceTokenProvider();
var token = provider.GetAccessTokenAsync("https://database.windows.net/").Result;
connection.AccessToken = token;
Разверните в Azure Службу приложений и просмотрите URL. Результат: ошибка 500.30 Поиск в журнале событий приложений:

Необработанное исключение. System.AggregateException: произошла одна или несколько ошибок. (Параметры: Строка подключения: [Строка подключения не указана], Ресурс: https://database.windows.net, Полномочия:. Сообщение об исключении: Попробовал следующие 3 метода для получения токена доступа, но ни один из них не работал. Параметры: Строка подключения: [Строка подключения не указана], Ресурс: https://database.windows.net, Полномочия:. Сообщение об исключении: Попытка получить токен с использованием идентификатора управляемой службы. Не удалось получить токен доступа. Получена ошибка, не подлежащая повторению MSI ResponseCode: BadRequest, Response: {"StatusCode": 400, "Message": "MSI не найден для указанного ClientId / ResourceId.", "CorrelationId": "a68bf757-518a-42e1-85a9-342320d39b5a"} Параметры: соединение Строка: [Строка подключения не указана], Ресурс: https://database.windows.net, Полномочия:. Сообщение об исключении: Попытка получить токен с помощью Visual Studio. Не удалось получить токен доступа. Файл поставщика токена Visual Studio не найден в «D: \ local \ LocalAppData.IdentityService \ AzureServiceAuth \ tokenprovider. json» Параметры: Строка подключения: [Нет подключения указанная строка], Ресурс: https://database.windows.net, Полномочия:. Сообщение об исключении: Попытка получить токен с помощью Azure CLI. Не удалось получить токен доступа. 'az' не распознается как внутренняя или внешняя команда, работающая программа или пакетный файл.

Самая интересная часть в IMO:

Ответ: {"StatusCode": 400, "Сообщение": "MSI не найден для указанного ClientId / ResourceId.", "CorrelationId": "a68bf757-518a-42e1-85a9-342320d39b5a"}

Мой вопрос:

  • Работают ли назначенные пользователем идентификаторы с Azure SQL?
  • Если так, что я делаю неправильно?
  • У кого-то есть рабочий пример.

1 Ответ

3 голосов
/ 26 февраля 2020

Назначенная пользователем управляемая идентификация поддерживается в версии 1.2.1 Microsoft. Azure .Services.AppAuthentication.

Итак, обновите версию Microsoft. Azure .Services.AppAuthentication до последней версии.

Затем установите AzureServicesAuthConnectionString в Appsettings AppService на RunAs = App; AppId = {ClientId назначенного пользователем удостоверения}. Например, RunAs = App; AppId = 587f16c8-81ed-41c7-b19a-9ded0dbe2ca2

Документацию можно найти здесь .

После того, как вы выполните эти шаги, ваш код должен использовать назначенную пользователем управляемую идентификацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...