Это потребовалось навсегда, чтобы выяснить это, и в официальных документах об этом очень мало информации.
Но оказывается, что проблема заключалась в том, что функции Azure не поддерживают токены Bearer, сгенерированные API-интерфейсом oauth2 / v2.0 / Azure. Так как портал использует их (если ваша AD поддерживает их), вам не повезло, что вы можете запустить функцию там.
Это также объясняет, почему мои запросы почтальона не работали, потому что я также использовал API v2. После перехода на v1 я смог получить доступ к своему API (Почтальон не позволяет вам добавлять resource_id при использовании встроенной функции аутентификации, поэтому мне пришлось переключиться на обработку всего вручную).
После этого пришло осознание того, что вы не можете использовать MSAL, если пишете JS-клиент (в моем случае это Angular). Таким образом, одна альтернатива - ADAL, где реализация Angular выглядит несколько неловко. Поэтому я решил использовать angular-oauth2-oidc, который занял еще час, чтобы заставить его хорошо играть с Azure AD.
Но после всего этого я наконец могу получить доступ к своему API.
Я действительно не понимаю, почему вы не разрешаете пользователям получать доступ к функциональным приложениям Azure с помощью токенов Azure AD v2, но по крайней мере это должно быть гораздо лучше задокументировано. Но как бы то ни было, я, наконец, могу пойти спать.
РЕДАКТИРОВАТЬ: После того, как я открыл для этого проблему, они добавили примечание, что v2 не поддерживается функциями Azure, и, надеюсь, облегчит жизнь другим людям.
https://docs.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad