Самый простой вариант - это go перейти на вкладку идентификации вашего приложения с функциями и включить «Управляемую идентификацию, назначенную системой». Затем вы можете получить токен доступа без необходимости указывать client_id, поскольку запрос токена просто выбирает идентификатор, назначенный системой, если он существует для приложения-функции.
Если вы используете «управляемое удостоверение, назначенное пользователем», тогда вам нужно предоставить client_id: либо через env, либо непосредственно в вашем коде.
Возможно, вы уже знаете, но просто дополнительное примечание: вам также необходимо убедиться, что вы предоставили доступ к своей управляемой личности для ресурса, к которому вы обращаетесь, например: переход к ресурсу Azure, к которому ваше приложение-функция должно получить доступ, и присвоение соответствующей роли для вашего управляемого удостоверения.
ваш вариант 1 (запрос Azure Служба метаданных экземпляра ), доступен только на виртуальных машинах.
ОБНОВЛЕНИЕ
Поскольку client_id нужен для других целей, вы также можете прочитать его из ответа на ваш запрос для токен доступа: client_id - это один из параметров токена JSON, возвращаемого вам по wi th токен доступа, и его значение - это client_id используемого вами управляемого удостоверения (в вашем случае, управляемое удостоверение, назначенное системой)
Вот пример ответа маркера, чтобы проиллюстрировать это:
{
access_token: <...>,
resource: <...>,
token_type: 'Bearer',
client_id: <client_id of the managed identity used to get this token>
}