Цель
Получите доступ к локальным данным SharePoint с помощью запросов REST из мобильного приложения на основе Apache Cordova с использованием OAuth.
Что я пробовал до сих пор
1. Мобильные службы Azure/гибридное подключение/AAD/ADAL
Аналогично сообщению в блоге Доступ к SharePoint от имени пользователя, но с локальным сервером вместо O365:
- Вход на стороне клиента с помощью ADAL для Apache Cordova.
- Мобильная служба, подключенная к локальному серверу через гибридные соединения.
- Использование ADAL.net для получения маркера для сервера SharePoint с помощью маркера, полученного на шаге 1.
Это работает нормально, за исключением третьего шага, поскольку между локальным сервером и AAD нет соединения, поэтому получить токен невозможно.
2. То же, что и выше, плюс прокси приложения Azure.
Мы настроили Azure Application Proxy, как описано Кирком Эвансом в этом сообщение. Приложению Azure AD для мобильной службы предоставляется разрешение на доступ к приложению для прокси приложения (в том же клиенте Azure AD).
Теперь шаги с первого по третий работают нормально. Нам удалось получить токен, используя URL-адрес прокси-сервера приложения в качестве ресурса. Затем мы попытались выполнить запрос REST с использованием токена следующим образом:
GET https://<server>.msappproxy.net/_api/web/title
Authorization: Bearer <the token>
Accept: application/json;odata=verbose
Но это отправляет перенаправление 302 на https://login.microsoftonline.com. Я попытался эмулировать рукопожатие, выполняемое при использовании браузера, отправив токен как id_token= в прокси-сервер приложения, но это кажется немного надуманным и не предназначено для настройки прокси-сервера приложения Azure.
Я думаю, что недостающая часть заключается в том, чтобы включить аутентификацию на основе токенов для локального SharePoint. Я не мог найти ничего о том, как это сделать. Я рассматривал возможность изучения установки приложений SharePoint (теперь надстроек) на локальном сервере. Сомневаюсь, что это решит проблему. Я попытался подключить сервер к AAD, используя следующий метод: Как использовать сайт Office 365 SharePoint для авторизации приложений, размещенных у поставщика, на локальном сайте SharePoint. Опять же, это было больше похоже на выстрел в темноте.
Вопрос
Как получить токен для AAD и использовать его для выполнения запросов к локальному SharePoint из мобильного приложения Cordova?