У меня есть собственный .NET API, и я настроил многопользовательскую аутентификацию для Azure AD, которая работает хорошо. Все клиенты из разных подписок на Office 365 будут вызывать один и тот же API, и этот API будет обращаться к Office 365 от имени вызывающего пользователя. Все идет нормально.
Мы без проблем позвонили в Microsoft Graph от имени пользователя. Теперь нам также нужно вызвать в SharePoint от имени пользователя и мы столкнулись с проблемой, заключающейся в том, что местоположение необходимо предварительно настроить в нашей службе приложений, как показано ниже:
Мы можем решить эту проблему, настроив всех клиентов SharePoint в этой конфигурации, но, поскольку она может часто меняться и без предупреждения, мы хотим найти решение, в котором это можно было бы устанавливать динамически.
(Я знаю, что могу обновить конфигурацию Azure с помощью Azure API, но я ищу решение, которое эффективно аутентифицирует «любой» клиент)
Кто-нибудь знает, можем ли мы переопределить этот параметр в нашем приложении динамически и как?
Согласно вашему описанию, вы используете встроенную аутентификацию / авторизацию службы приложений (Easy Auth). AFAIK, вы также можете явно указать дополнительные параметры входа в систему следующим образом:
https://<your-webapp-name>.azurewebsites.net/.auth/login/aad?resource=https://graph.microsoft.com&response_type=code id_token
Для вашего требования вам может потребоваться перенаправить свой заказ на указанную выше конечную точку с соответствующим параметром resource
для аутентификации.
Более того, если вы хотите одновременно вызывать ресурсы Microsoft Graph и SharePoint от имени зарегистрированного пользователя, вам может потребоваться использовать от имени потока в вашем коде для получения токенов для доступа к другому API. Поскольку вы используете встроенную аутентификацию, вы можете сосредоточиться на процессе получения токена из другого ресурса (например, Microsoft Graph или SharePoint) в своем проекте .NET Web API. Подробное руководство по коду, вы можете следовать Вызов подчиненного веб-API из веб-API с помощью Azure AD.
Я думал, что могу включить несколько ресурсов в один запрос.