Создание надстроек SharePoint, использующих междоменную библиотеку

В некоторых сценариях не удастся использовать систему авторизации с низким либо высоким уровнем доверия в надстройке SharePoint. В ряде случаев такие системы лучше не использовать в качестве единственного средства авторизации для доступа надстройки к ресурсам SharePoint.

Примеры:

  • Удаленные компоненты надстройки SharePoint находятся не в локальной среде, а корпоративный брандмауэр блокирует межсерверное взаимодействие между SharePoint и ACS, тем самым не позволяя использовать систему с низким уровнем доверия.

  • Надстройка SharePoint — это одностраничное веб-приложение, использующее клиентский код JavaScript для выполнения операций над данными в SharePoint.

  • Надстройка SharePoint в основном использует межсерверные вызовы для доступа к данным SharePoint (и авторизуется системами с низким или высоким уровнем доверия), но его необходимо дополнить вызовами JavaScript. Например, страница с интенсивным использованием графики может применять JavaScript, чтобы вносить небольшие изменения в отображаемые данные без перегрузки всей страницы.

Однако в целях безопасности браузеры не разрешают коду JavaScript, размещенному в одном домене, получать доступ к ресурсам в другом домене. Поэтому необходимо использовать специальный метод, чтобы предоставить удаленному коду JavaScript доступ к ресурсам SharePoint. Междоменная библиотека JavaScript для SharePoint упрощает использование этого метода в веб-приложениях.

Примечание

Междоменная библиотека также используется для предоставления доступа к данным в обратном направлении (т. е. для того, чтобы разрешить коду JavaScript на странице SharePoint получать доступ к данным на удаленном домене). Дополнительные сведения см. в статье Доступ к удаленным данным со страницы SharePoint.

Общие сведения об архитектуре междоменной библиотеки

Междоменная библиотека SharePoint содержится в файле SP.RequestExecutor.js, который расположен в виртуальной папке /_layouts/15/ каждого веб-сайта SharePoint. Сценарии в этом файле используют известный способ обхода ограничения междоменных сценариев браузера: iFrame может взаимодействовать с родительской страницей с помощью функции window.postMessage(), даже если страница в iFrame находится в другом домене. Поэтому запросы данных и отклики на них передаются через границу домена с помощью вызовов postMessage().

Предупреждение

Функция postMessage() работает только в браузерах, поддерживающих HTML 5, поэтому надстройки SharePoint, в которых используется междоменная библиотека, не будут работать в старых браузерах.

Для SharePoint междоменная библиотека загружается на странице удаленного веб-приложения, на которой она создает скрытые элементы iFrame. В этих элементах размещается специальная прокси-страница из домена SharePoint. Прокси-страницы уже находятся на каждом веб-сайте SharePoint.

Библиотека используется для создания объекта JSON, содержащего все данные, необходимые при выполнении вызова CRUD для REST API SharePoint. Объект JSON передается прокси-странице с помощью функции postMessage(). На прокси-странице, на которой также загружается библиотека, объект JSON анализируется и преобразуется в вызов REST для SharePoint. Так как прокси-страница находится в домене SharePoint, браузер разрешает вызов.

Конечно, у удаленных компонентов надстройки SharePoint по-прежнему должен быть авторизованный доступ к ресурсам SharePoint. Для этого существует два способа:

  • Выберите для параметра типа субъекта надстройки значение RemoteWebApplication (используется по умолчанию для приложений, размещаемых у поставщика) в манифесте надстройки. Если надстройка зарегистрирована в ACS, регистрация включает домен удаленного веб-приложения. SharePoint доверяет доменам, зарегистрированным в ACS, даже если не использует потоки передачи маркеров, входящие в серверную систему с низким уровнем доверия, как в этом сценарии. Дополнительные сведения о регистрации надстроек см. в статье Регистрация надстроек SharePoint.

  • В надстройке, размещаемой в SharePoint, для типа субъекта надстройки можете оставить значение по умолчанию, то есть Internal. Затем можно задать для атрибута AllowedRemoteHostUrl элемента Internal URL-адрес удаленного веб-приложения, как в приведенном ниже примере.

  <AppPrincipal>
    <Internal AllowedRemoteHostUrl="https://example.com/Home.html" />
  </AppPrincipal>

Примечание

Если вы выбрали второй вариант (субъект надстройки Internal), то для доступа к SharePoint сможете использовать только JavaScript и междоменную библиотеку. Клиентская объектная модель SharePoint заблокирована для надстроек SharePoint с типом Internal, поэтому вам не удастся использовать двойную систему авторизации (с применением и междоменной библиотеки, и систем с низким либо высоким уровнем доверия).

Сведения о том, как использовать библиотеку, см. в статье Обращение к данным SharePoint из надстроек с помощью междоменной библиотеки.

Доступ к удаленным данным со страницы SharePoint

Междоменную библиотеку SharePoint можно также использовать наоборот. В этом случае код JavaScript на странице SharePoint сможет с ее помощью получить данные из удаленных компонентов надстройки. Чтобы сделать это, необходимо изменить междоменную архитектуру, создав прокси-страницу в удаленном веб-приложении. Библиотека вызывается со страницы SharePoint, на которой создает элемент iFrame для размещения прокси-страницы.

Сведения о том, как использовать библиотеку таким способом, см. в статье Создание настраиваемой прокси-страницы для междоменной библиотеки в SharePoint.

См. также