DefaultAzureCredential не работает с управляемой идентификацией, назначаемой пользователем, в службе приложений Azure, в то время как это не относится к Azure VMSS.
Включено такое же «управляемое удостоверение, назначенное пользователем» для Azure VMSS, а также для приложения-функции Azure.
Добавлен MI в политику доступа хранилища ключей Azure.
На указанных ниже хостах приложений с помощью DefaultAzureCredential, пытающегося подключиться к хранилищу ключей Azure для чтения секретов приложения,
Из приложения, развернутого в Azure VMSS, можно без каких-либо проблем подключиться к хранилищу ключей Azure для чтения секретов приложения с помощью API DefaultAzureCredential.
Если функция Azure не может подключиться к хранилищу ключей с помощью API DefaultAzureCredential, она выдает исключение ниже.
System.Exception: ошибка в построителе конфигураций 'AzureAppConfiguration'::GetValue(test-key) ---> System.AggregateException: произошла одна или несколько ошибок. ---> Azure.Identity.AuthenticationFailedException: ошибка аутентификации DefaultAzureCredential. ---> Azure.Identity.AuthenticationFailedException: ошибка аутентификации ManagedIdentityCredential. ---> Azure.RequestFailedException: запрос на обслуживание не выполнен. Статус: 400 (неверный запрос)
Решите указанную выше проблему в приложении-функции Azure, добавив явную переменную «AZURE_CLIENT_ID» в настройки приложения и назначив ей имя «управляемое удостоверение, назначенное пользователем».
Хотелось бы знать, почему существует разница в поведении API «DefaultAzureCredential» при его использовании в приложении Azure VMSS и функции Azure, где требуется явное упоминание «AZURE_CLIENT_ID»? в чем тут смысл?
PS: вышеупомянутое происходит только с назначенным пользователем, а не назначенным системой управляемым идентификатором.
1 ответ
Это не проблема с удостоверением личности, это проблема с запросом. HTTP 400 означает, что что-то не так с токеном, отправленным в Key Vault. Если бы это было 403, то оно было бы отклонено из-за политики доступа.
Кроме того, при использовании удостоверения, назначаемого пользователем, вы всегда должны четко указывать удостоверение, которое хотите использовать. Вот почему это работает.