Введение
Решение Vitextra Employee Directory не ведёт собственную базу данных сотрудников. Люди, атрибуты профилей, фотографии, руководители, присутствие в Teams и сведения о занятости считываются из Microsoft 365 во время работы через Microsoft Graph API. Для этого пакет решения запрашивает пять разрешений Microsoft Graph, которые администратор клиента утверждает один раз.
В этой статье перечислены эти разрешения, объяснено, для чего используется каждое из них и какой веб-части оно нужно, точно описано, что видят пользователи, если разрешение не утверждено, и показано, как утвердить разрешения и проверить их состояние. Статья предназначена для администраторов SharePoint и Microsoft 365, а также для специалистов по безопасности, которые оценивают продукт перед развёртыванием.
Разрешения
Пакет Vitextra Employee Directory содержит три веб-части — Employee Directory, Employee Directory (Entra ID) и New Employees — и запрашивает для них один общий набор разрешений. Все пять — делегированные разрешения Microsoft Graph:
| Разрешение | Для чего используется | Где нужно | Если не утверждено |
|---|---|---|---|
Directory.Read.All | Чтение участников ролей каталога Microsoft Entra для условия Роли пользователей в редакторе фильтров. Вместе с User.Read.All оно также позволяет читать учётные записи пользователей | Employee Directory (Entra ID), New Employees — только если в фильтре есть условие Роли пользователей | Условие работает так, как будто выбранных ролей нет ни у кого. Ошибка не отображается |
User.Read.All | Чтение и поиск учётных записей пользователей и атрибутов их профилей, руководителя и прямых подчинённых человека, команды текущего пользователя, а также фотографий сотрудников | Все три веб-части; в веб-части Employee Directory с источником Профили пользователей — только панель сведений и быстрые фильтры | Список людей не загружается, и отображается ошибка (см. ниже) |
Presence.Read.All | Индикатор присутствия Microsoft Teams на карточках, столбец Состояние и сообщение Нет на месте в панели сведений | Все три веб-части | Люди отображаются без присутствия; в столбце Состояние указано Не в сети |
Calendars.Read | Расписание занятости человека и текущего пользователя на сегодня вместе с часовым поясом и рабочими часами человека | Employee Directory, Employee Directory (Entra ID) — панель сведений | Раздел Местное время, Рабочие часы и Доступность не отображается |
People.Read | Список людей, с которыми текущий пользователь работает чаще всего | Employee Directory, Employee Directory (Entra ID) — быстрый фильтр Люди, с которыми я работаю | Вкладка Люди, с которыми я работаю не отображается |
📝 Заметка
Разрешения Directory.Read.All и User.Read.All пересекаются: для чтения учётных записей пользователей Microsoft Graph принимает любое из них. Поэтому ошибка, описанная в строке User.Read.All, возникает, когда не утверждено ни одно из них, — это обычное состояние сразу после развёртывания, пока все пять запросов ещё ожидают утверждения. Утвердите оба разрешения, как того требует пакет.
Employee Directory только читает данные. Решение ничего не создаёт, не изменяет и не удаляет в Microsoft Entra ID, Exchange Online, Teams или SharePoint и не запрашивает ни одного разрешения со словом Write в названии.
Делегированные, а не разрешения приложения
Все пять разрешений — делегированные: каждый вызов Microsoft Graph выполняется из браузера вошедшего пользователя с маркером, выданным этому пользователю. У веб-частей нет разрешений приложения (app-only), нет служебной учётной записи и нет собственного серверного компонента, который читал бы ваш каталог.
Для читателя страницы это означает простое правило: в Employee Directory пользователь никогда не видит больше, чем он и так может увидеть в Microsoft 365. Microsoft Graph применяет собственные права пользователя поверх делегированной области, поэтому веб-часть лишь представляет каталог, присутствие и сведения о занятости в более удобном виде. Кроме того, веб-части исключают гостевые учётные записи из своих списков.
📝 Заметка
Разрешения предоставляются не самому пакету Employee Directory. SharePoint предоставляет их одному приложению Microsoft Entra ID, которое используется для всех решений SPFx в клиенте, — SharePoint Online Web Client Extensibility (ранее: SharePoint Online Client Extensibility Web Application Principal). Если разрешение уже утверждено для другого решения, например для Vitextra Organizational Chart, используется то же самое предоставление, и запрос больше не появляется как ожидающий. То же утверждение действует и тогда, когда веб-части работают в Microsoft Teams.
Источник «Профили пользователей» и поиск SharePoint
Веб-часть Employee Directory может получать людей из двух источников, которые выбираются в её параметрах:
- Entra ID (Azure AD) — список, поиск и разбиение на страницы работают через Microsoft Graph и зависят от перечисленных выше разрешений.
- Профили пользователей — список, поиск, уточнения и сортировка берутся из поиска SharePoint (результаты по людям службы поиска SharePoint), а не из Microsoft Graph. Они работают с собственными правами пользователя на поиск SharePoint с обычным отсечением по правам доступа и не требуют ни одного разрешения Microsoft Graph. Раздел Последние документы в панели сведений также использует поиск SharePoint.
Даже с источником Профили пользователей некоторые части веб-части по-прежнему обращаются к Microsoft Graph: фотографии, присутствие и сообщение Нет на месте, разделы Руководитель и Прямые подчинённые и раздел Местное время, Рабочие часы и Доступность в панели сведений, а также быстрые фильтры Моя команда и Люди, с которыми я работаю. Они зависят от тех же разрешений, что и в режиме Entra ID (Azure AD).
Веб-части Employee Directory (Entra ID) и New Employees всегда используют Microsoft Graph.
💡 Совет
О различиях между двумя веб-частями каталога и их источниками см. статью KB10310. Employee Directory или Employee Directory (Entra ID): какую веб-часть выбрать.
Что видят пользователи, если разрешения нет
Веб-части устроены так, что отсутствие необязательного разрешения отключает только зависящую от него функцию. Точное поведение в текущей версии:
| Веб-часть / режим | Отсутствующее разрешение | Что видят пользователи |
|---|---|---|
| Employee Directory (Entra ID) | User.Read.All (и Directory.Read.All) | Вместо списка — значок ошибки с текстом ошибки, который вернул Microsoft Graph; если текста нет — сообщение К сожалению, произошла непредвиденная ошибка. Обновите страницу и повторите попытку. |
| Employee Directory, источник Entra ID (Azure AD) | User.Read.All (и Directory.Read.All) | Та же ошибка вместо результатов поиска |
| Employee Directory, источник Профили пользователей | User.Read.All (и Directory.Read.All) | Список, поиск и уточнения продолжают работать. В панели сведений не отображаются разделы Руководитель и Прямые подчинённые, а фотографии берутся из SharePoint, а не из Microsoft Graph |
| New Employees | User.Read.All (и Directory.Read.All) | Значок ошибки с сообщением К сожалению, произошла непредвиденная ошибка. Обновите страницу и повторите попытку., за которым следует текст ошибки, возвращённый Microsoft Graph |
| Employee Directory (Entra ID), New Employees | Directory.Read.All | Условию Роли пользователей с оператором Содержит не соответствует никто, а условию с оператором Не содержит — все. Ошибка не отображается |
| Все веб-части | Presence.Read.All | На карточках нет индикатора присутствия, в столбце Состояние у всех указано Не в сети, а в панели сведений нет сообщения Нет на месте |
| Employee Directory, Employee Directory (Entra ID) | Calendars.Read | Раздел Местное время, Рабочие часы и Доступность в панели сведений не отображается. Ошибка не отображается |
| Employee Directory, Employee Directory (Entra ID) | People.Read | Вкладка Люди, с которыми я работаю скрыта на панели быстрых фильтров. Остальные вкладки продолжают работать |
❗ Важно
Веб-часть Employee Directory (Entra ID) хранит копию загруженного списка в браузере и показывает её при следующем посещении. Если разрешение отозвано после того, как пользователи уже открывали веб-часть, их браузеры продолжают показывать список из кэша, пока копия не станет старше 24 часов или пока пользователь не нажмёт Обновить; после этого появляется ошибка. Проверяя изменение разрешений, очистите данные сайта в браузере или используйте приватное окно.
📝 Заметка
Для присутствия и сведений о занятости одного разрешения недостаточно: чтобы у человека было состояние присутствия, он должен пользоваться Microsoft Teams, а чтобы было расписание занятости — иметь почтовый ящик Exchange Online. Подробнее о разделе доступности см. статью KB10317. Employee Directory: местное время, рабочие часы и доступность, о быстрых фильтрах — статью KB10214. Быстрые фильтры Employee Directory: мой отдел, моя команда, люди, с которыми я работаю, избранное.
Утверждение разрешений
Запросы разрешений создаются автоматически, когда пакет Employee Directory развёртывается в каталоге приложений клиента. Их утверждает Администратор SharePoint или Глобальный администратор:
- Откройте Центр администрирования SharePoint.
- В области навигации слева разверните раздел Дополнительно и выберите Доступ к API.
- На вкладке Ожидающие запросы найдите запросы пакета Vitextra Employee Directory к Microsoft Graph —
Directory.Read.All,User.Read.All,Presence.Read.All,Calendars.ReadиPeople.Read. - Выберите каждый запрос, нажмите Утвердить и подтвердите.
Пользователи не видят запроса на согласие: после утверждения веб-части работают у всех в клиенте. Если через несколько минут после утверждения веб-часть всё ещё показывает ошибку, обновите страницу.
💡 Совет
Полная процедура, включая утверждение с помощью PowerShell, частичное утверждение и отзыв разрешений, описана в статье KB10360. Как одобрить разрешения Microsoft Graph API для решений Vitextra в Центре администрирования SharePoint.
Проверка состояния разрешений
Чтобы проверить, какие разрешения действуют, откройте Дополнительно › Доступ к API в Центре администрирования SharePoint:
- На вкладке Утвержденные запросы должны быть перечислены все пять разрешений Microsoft Graph. Поскольку предоставления действуют на весь клиент, разрешение может быть указано там под другим пакетом, который запросил его первым, — этого достаточно.
- Любое разрешение, которое всё ещё указано на вкладке Ожидающие запросы, пока не действует; функции, которые от него зависят, ведут себя так, как описано в разделе Что видят пользователи, если разрешения нет.
При обновлении Employee Directory ранее утверждённые разрешения остаются утверждёнными. Если новая версия запрашивает дополнительное разрешение, оно появляется на вкладке Ожидающие запросы, и его нужно утвердить тем же способом.
Заметки для проверки безопасности
Для проверки безопасности обычно важны следующие моменты:
- Все пять разрешений делегированные и предназначены только для чтения. Employee Directory никогда ничего не записывает в Microsoft 365.
- Данные каталога, фотографии, присутствие и сведения календаря запрашиваются браузером пользователя напрямую из Microsoft Graph и SharePoint и не передаются ни Vitextra, ни третьим лицам.
- Источник Профили пользователей читает людей через поиск SharePoint с правами самого пользователя, и для самого списка ему не нужно ни одного разрешения Microsoft Graph.
- Избранное, кэшированный список сотрудников и конфигурация по умолчанию для личного приложения Teams хранятся вне Microsoft Graph; где именно и какие данные читают веб-части, описано в статье KB10469. Employee Directory: какие данные читает веб-часть и где хранятся избранное и параметры.
- Единственные запросы к службам Vitextra — проверка лицензии и телеметрия использования с техническими идентификаторами; см. статью KB10363. Где продукты Vitextra хранят ваши данные: конфиденциальность, расположение данных и GDPR.
💡 Совет
Об установке решения см. статью KB10035. Как установить продукт Vitextra в SharePoint Online. О добавлении веб-части на страницу см. статью KB10309. Как добавить и настроить веб-часть Employee Directory.