Я могу вспомнить три разных подхода, которые будут работать.
Использование токена на предъявителя.
Создайте две отдельные регистрации приложений, одну для веб-приложения и одну для функционального приложения. Настройте функцию аутентификации / авторизации для соответствующих приложений, для обоих из которых требуется доступ AAD. Дайте разрешение на регистрацию приложения AAD веб-приложения для доступа к регистрации приложения AAD приложения функции.
Чтобы убедиться, что токен доступа вашего веб-приложения - это JWT, который можно использовать для связи с вашим функциональным приложением, вам необходимо добавить дополнительные параметры входа в свое веб-приложение. Для этого следуйте инструкциям здесь , но вместо этого установите additionalLoginParams
в resource=<your-function-app-registration-client-id>
.
Когда пользователь делает аутентифицированный запрос к веб-приложению, должен быть заполнен заголовок с именем X-MS-TOKEN-AAD-ACCESS-TOKEN
, который должен быть токеном доступа для аудитории, зарегистрировавшей приложение вашего приложения-функции. Затем его можно использовать в качестве маркера-носителя для вызовов API приложения-функции, которые должны удовлетворять требованиям аутентификации / авторизации приложения-функции.
Использование потока от имени
Создайте две отдельные регистрации приложений, одну для веб-приложения и одну для функционального приложения. Настройте функцию аутентификации / авторизации для соответствующих приложений, для обоих из которых требуется доступ AAD. Дайте разрешение на регистрацию приложения AAD веб-приложения для доступа к регистрации приложения AAD приложения функции.
Затем выполните от имени потока , чтобы веб-приложение могло получить токен доступа для пользователя, прошедшего проверку подлинности, для приложения-функции. Есть несколько библиотек, которые помогают с этим потоком. См. ADAL , если ваши регистрации приложений являются приложениями AAD V1, или MSAL , если ваши регистрации приложений являются приложениями AAD V2.
Использовать поток, направленный на клиента (X-ZUMO-AUTH)
Создайте две отдельные регистрации приложений, одну для веб-приложения и одну для функционального приложения. Настройте функцию аутентификации / авторизации для соответствующих приложений, для обоих из которых требуется доступ AAD. Дайте разрешение на регистрацию приложения AAD веб-приложения для доступа к регистрации приложения AAD приложения функции.
Чтобы убедиться, что токен доступа вашего веб-приложения можно использовать для аутентификации в вашем функциональном приложении, вам необходимо добавить дополнительные параметры входа в свое веб-приложение. Для этого следуйте инструкциям здесь , но вместо этого установите additionalLoginParams
на resource=<your-function-app-registration-client-id>
.
Когда пользователь делает аутентифицированный запрос к веб-приложению, должен быть заполнен заголовок с именем X-MS-TOKEN-AAD-ACCESS-TOKEN
, который должен быть токеном доступа к аудитории регистрации приложения вашего приложения-функции вместе с токеном id в заголовке X-MS-TOKEN-AAD-ID-TOKEN
. Сделайте POST-запрос к https: //.azurewebsites.net/.auth/login/aad с полезной нагрузкой
{"id_token": <id-token>, "access_token": <access-token>}
. Это вернет маркер сеанса, который вы можете прикрепить как X-ZUMO-AUTH
заголовок для аутентификации запросов.
ПРИМЕЧАНИЕ. Заявки в этом параметре будут утверждениями токена аутентификации, которые не являются утверждениями поставщика удостоверений, как в первых двух вариантах. Чтобы получить те же требования, что и для других параметров, установите для параметра приложения WEBSITE_AUTH_ZUMO_USE_TOKEN_STORE_CLAIMS
значение true
.
.