Создание надстроек 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.
См. также
- Обращение к данным SharePoint из надстроек с помощью междоменной библиотеки
- Работа с междоменной библиотекой в различных зонах безопасности Internet Explorer в надстройках SharePoint
- Исправление междоменных проблем в надстройках SharePoint (публикация блога)
- Авторизация и аутентификация надстроек SharePoint