Введение
Веб-часть, которая приносит в интрасеть содержимое извне компании, ставит перед администратором два вопроса: что покидает клиент (тенант) Microsoft 365 и что в него попадает. RSS Reader необычен среди продуктов Vitextra тем, что его содержимое действительно проходит через сервер Vitextra — службу каналов, которая загружает каналы. В этой статье точно указано, что содержит этот запрос, что веб-части разрешено делать в вашем клиенте, где находится её конфигурация, что она хранит в браузере и как обращается с HTML, который издатели помещают в свои каналы.
Кратко для администраторов
| Вопрос | Ответ |
|---|---|
| Какие разрешения API запрашивает пакет? | Никаких |
| Читает ли веб-часть списки SharePoint, файлы или профили пользователей? | Нет |
| Кто загружает каналы? | Служба каналов Vitextra по запросу браузера |
| Что содержит запрос к службе каналов? | Адреса каналов, идентификатор клиента (Tenant ID), идентификатор объекта пользователя, адрес сайта, продукт и его версия |
| Отправляется ли в Vitextra какое-либо содержимое вашего клиента? | Нет |
| Где хранится конфигурация? | В свойствах веб-части на странице; для личного приложения Teams — в службе Vitextra для вашего клиента |
| Что хранится в браузере? | Последние загруженные элементы каналов, до 30 минут сеанса вкладки |
| Выполняется ли HTML каналов на странице? | Нет — он разбирается инертно; используются только обычный текст и адреса изображений |
Разрешения решения
RSS Reader — это веб-часть SharePoint Framework, которая развёртывается из каталога приложений.
- Пакет не запрашивает разрешений API. На странице Доступ к API Центра администрирования SharePoint ничего не появляется, и веб-часть не обращается за данными ни к Microsoft Graph, ни к REST API SharePoint.
- Из контекста страницы она читает только то, что есть у каждой веб-части: тему, язык, адрес сайта (для проверки лицензии и запроса каналов) и удостоверение вошедшего пользователя (идентификатор объекта, для тех же запросов).
- Она ничего не записывает в SharePoint, OneDrive или Microsoft Entra ID.
Что нужно пользователям
| Задача | Необходимое разрешение |
|---|---|
| Загрузить пакет в каталог приложений, добавить его в Teams | Администратор SharePoint или владелец каталога приложений |
| Добавить веб-часть на страницу и настроить каналы | Разрешение на изменение страницы |
| Сохранить конфигурацию по умолчанию для личного приложения Teams | Разрешение на изменение страницы с веб-частью |
| Читать каналы, переключать источники, фильтровать и искать | Разрешение на чтение страницы |
Как загружаются каналы и что передаётся
Браузеры не позволяют скрипту с одного сайта загружать документ с другого сайта, если тот не разрешает это заголовками междоменных запросов; издатели каналов почти никогда этого не делают. Поэтому веб-часть RSS, работающая только в браузере, не справилась бы с большинством каналов. RSS Reader решает это серверной службой каналов на vitextra.com: браузер отправляет ей список адресов каналов, служба загружает каналы из интернета, разбирает их и возвращает каналы и элементы в виде структурированных данных.
Каждая загрузка и каждое автоматическое обновление — это один запрос к службе каналов со следующим содержимым:
| Поле | Значение |
|---|---|
| Sources | Адреса настроенных каналов |
| TenantId | Идентификатор вашего клиента Microsoft 365 |
| UserId | Идентификатор объекта (GUID) вошедшего пользователя в Microsoft Entra ID |
| SiteUrl | Адрес сайта, на котором работает веб-часть |
| ProductId, ProductName, ProductVersion | Идентификатор, внутреннее имя и версия продукта |
Ответ содержит элементы каналов — заголовки, ссылки, описания, даты, авторов, категории и адреса изображений — и список источников, которые не удалось загрузить. Служба не получает и не возвращает никакого содержимого вашего клиента; пользователь обозначается GUID, а не именем или адресом электронной почты.
Три следствия:
- настроенные вами адреса каналов известны службе каналов. Не используйте каналы, адрес которых сам содержит секрет (персональный токен или ключ API в строке запроса): такие каналы не предназначены для передачи никакому агрегатору и в любом случае не поддерживаются, потому что служба загружает каналы анонимно;
- каналы, доступные только внутри вашей сети, показать нельзя;
- браузер никогда не подключается к серверам издателей за каналом. Он подключается к ним за изображениями элементов, которые загружаются браузером напрямую, как любая картинка на веб-странице, — издатель видит обычный запрос изображения от браузера пользователя.
📝 Заметка
Обработка этих запросов компанией Vitextra описана в Политике конфиденциальности. Запрос сообщает службе, какие каналы настроены на странице, а не какие статьи открывает пользователь: ссылки на статьи ведут прямо к издателю, и ни один клик в Vitextra не передаётся.
Где хранится конфигурация
На странице SharePoint конфигурация — каналы с их адресами, названиями и порядком, макет и переключатели — хранится в свойствах веб-части, внутри страницы в библиотеке Страницы сайта. Каждый, кто может читать страницу, может прочитать конфигурацию (адреса каналов в любом случае видны на вкладках источников); в версиях страницы сохраняются предыдущие конфигурации.
Для личного приложения Teams администратор сохраняет конфигурацию кнопкой Сохранить параметры в группе Личное приложение (Microsoft Teams). Эта конфигурация — те же поля, без названия веб-части — хранится службой Vitextra для вашего клиента и продукта, потому что у личного приложения нет страницы, где её можно было бы хранить. Её читает личное приложение каждого пользователя клиента, и она перезаписывается при следующем нажатии Сохранить параметры. Она содержит только параметры и адреса каналов, никаких данных пользователей.
Во вкладке канала Teams конфигурация хранится вместе с вкладкой, как на странице.
Что хранится в браузере
После успешной загрузки веб-часть записывает полученные элементы в хранилище сеанса браузера с ключом по набору адресов каналов и использует их до 30 минут, чтобы при следующем посещении мгновенно показать содержимое, пока в фоновом режиме загружаются свежие элементы. Кэш содержит элементы каналов в том виде, в каком их вернула служба каналов, и ничего о пользователе; он принадлежит сеансу вкладки браузера и удаляется при закрытии вкладки. Веб-часть не использует локальное хранилище, файлы cookie и никакое другое постоянное хранилище.
Какие статьи открывал пользователь, не записывается нигде. Приглушение уже открытых заголовков основано на собственной памяти браузера о посещённых ссылках, которую не может прочитать ни один скрипт.
Как отображается содержимое каналов
Элементы каналов содержат HTML, написанный издателем: описания с разметкой, встроенные изображения, иногда скрипты или пиксели отслеживания. RSS Reader никогда не вставляет этот HTML в страницу:
- описание разбирается инертным парсером (
DOMParser), который не выполняет скрипты и не загружает встроенные ресурсы, и отображается только его обычный текст; - изображение элемента берётся из медиаэлементов канала или из первого изображения описания, а однопиксельные изображения — типичные пиксели отслеживания — пропускаются; затем изображение показывается как обычный элемент
<img>с адресом издателя; - ссылки открывают исходную статью в новой вкладке на сайте издателя; веб-часть не добавляет параметров отслеживания.
Некорректный элемент — с отсутствующими элементами, повреждённой разметкой — показывается с теми данными, которые у него есть, и не мешает отображению остальных элементов.
Запросы к службам Vitextra
| Цель | Что отправляется | Куда |
|---|---|---|
| Служба каналов | См. таблицу выше | vitextra.com |
| Проверка лицензии | Идентификатор клиента (Tenant ID), идентификатор объекта пользователя, адрес сайта, идентификатор, название и версия продукта | vitextra.com |
| Конфигурация личного приложения Teams | Читается при каждой загрузке личного приложения; записывается кнопкой Сохранить параметры: перечисленные выше поля конфигурации | vitextra.com |
| Телеметрия использования | Событие при загрузке веб-части: название и версия продукта, идентификатор и адрес сайта, идентификатор объекта пользователя, язык интерфейса и признак работы веб-части в Teams; технические сведения об ошибках | Azure Application Insights |
| Файлы продукта | Обычный запрос файлов: скрипты и значки веб-части | static.vitextra.com, vitextra-storage.azureedge.net |
Те же сведения по всем продуктам Vitextra см. в статье KB10363. Где продукты Vitextra хранят ваши данные: конфиденциальность, расположение данных и GDPR.
Требования к сети
Разрешите исходящий HTTPS-трафик из сети пользователей (и из клиента Teams) к vitextra.com, static.vitextra.com и vitextra-storage.azureedge.net. Без первого узла веб-часть вместо элементов показывает К сожалению, произошла непредвиденная ошибка…; без двух остальных она не загружается вообще. Изображения элементов загружаются с узлов издателей; если ваш прокси блокирует издателя, его элементы появляются без картинок.
Рекомендации
- Используйте каналы издателей, которым доверяет ваша организация, как и для любого внешнего содержимого в интрасети: заголовки, тексты и картинки принадлежат им и меняются без вашей проверки.
- Отдавайте предпочтение адресам каналов по HTTPS с изображениями по HTTPS; картинки, отдаваемые по HTTP, браузер блокирует на HTTPS-страницах.
- Не настраивайте каналы, адрес которых содержит персональный токен; они становятся известны каждому, кто может читать страницу, и службе каналов.
- На общих компьютерах очищайте данные сайтов браузера при выходе, как и для любой страницы интрасети; кэш каналов в любом случае исчезает вместе с вкладкой.