Приложение в Microsoft Entra: регистрация и права
Чтобы UnSpot работал с календарями переговорных в Microsoft 365 через приложение, в вашем тенанте нужно зарегистрировать приложение в Microsoft Entra, выдать ему разрешения на календари и список переговорных, а затем передать в UnSpot три значения. Эта статья — про подготовку на стороне Microsoft; настройка самого подключения описана отдельно.
Что понадобится
- Доступ к Microsoft Entra с правом регистрировать приложения и подтверждать разрешения — например, роль Global Administrator. Без права подтверждения разрешений подготовку не закончить: приложение зарегистрируется, но доступа к календарям не получит.
- Переговорные, заведённые в Microsoft 365 как ресурсные почтовые ящики комнат (Room mailbox). UnSpot берёт список переговорных именно из них.
- Права в UnSpot для второго этапа: подключение создаёт Владелец.
Шаг 1. Проверьте ресурсные календари переговорных
Приложение получает список переговорных организации, а не список всех почтовых ящиков. Если комната заведена обычным пользователем, а не ресурсом, в списке она не появится, и подключить её календарь этим способом не получится. Как создать ресурс — статья «Создание ресурсного календаря в Office 365».
Выдавать приложению права на каждый календарь отдельно не нужно — этим вариант с приложением и отличается от подключения под учётной записью.
Шаг 2. Зарегистрируйте приложение
- Откройте entra.microsoft.com, в меню слева выберите App registrations и нажмите New registration.
- В поле Name введите произвольное имя — например, UnSpot Calendars.
- В Supported account types выберите вариант для одного тенанта: Accounts in this organizational directory only (Single tenant).
- Redirect URI заполнять не нужно: приложение работает без интерактивного входа пользователей.
- Нажмите Register.


Шаг 3. Создайте секрет приложения
- На странице приложения откройте Certificates & secrets (или ссылку Add a certificate or secret на вкладке Overview).
- Нажмите New client secret, при желании заполните Description и выберите срок действия — рекомендуем максимальный.
- Нажмите Add.
- Сразу скопируйте значение из колонки Value. После ухода со страницы Microsoft больше не покажет секрет целиком, и его придётся создавать заново.


Секрет — это пароль приложения. Храните его так же, как пароль сервисной учётной записи: не пересылайте в мессенджерах и не оставляйте в переписке.
Шаг 4. Скопируйте идентификаторы
Оба значения находятся на вкладке Overview приложения:
| Значение в Entra | Как называется в UnSpot |
|---|---|
| Application (client) ID | ClientId |
| Directory (tenant) ID | TenantId |

Шаг 5. Выдайте разрешения и подтвердите их
- На странице приложения откройте API permissions и нажмите Add a permission.
- Выберите Microsoft Graph, затем Application permissions — не Delegated permissions: приложение работает без пользователя.
- Отметьте два разрешения и нажмите Add permissions.
- Нажмите Grant admin consent и подтвердите. У обоих разрешений в колонке Status должна появиться зелёная отметка Granted.

| Разрешение | Зачем нужно |
|---|---|
| Place.Read.All | читать список переговорных организации — из него UnSpot собирает список комнат при подключении календаря |
| Calendars.ReadWrite | читать и изменять события в календарях: создавать встречи из броней UnSpot и вычитывать встречи, созданные в Outlook |

После подтверждения статус обоих разрешений меняется на Granted:

Делегированное разрешение User.Read, которое Entra добавляет при регистрации приложения, трогать не нужно — оно не мешает.
Названия разрешений приведены по документации Microsoft: UnSpot запрашивает у Microsoft токен приложения со стандартной областью, а конкретный набор прав задаётся в самом приложении Entra. Со стороны UnSpot нужны две возможности — читать список переговорных организации и читать-изменять события в календарях их ящиков.
Без нажатия Grant admin consent разрешения остаются заявленными, но не действующими. UnSpot в этом случае не сохранит подключение и покажет «Недостаточно прав для сервисного аккаунта или приложения».
Ограничение области действия приложения
Разрешение Calendars.ReadWrite уровня приложения действует на календари всех почтовых ящиков тенанта, а не только переговорных. Если такая широта прав неприемлема, область действия приложения ограничивается на стороне Exchange Online политикой New-ApplicationAccessPolicy — она разрешает приложению обращаться только к выбранной группе ящиков. Порядок настройки описан в документации Microsoft; со стороны UnSpot никаких дополнительных действий не требуется.
Если политика настроена слишком узко и в неё не попали ресурсные ящики переговорных, подключение сохранится, а подключение календаря к переговорной завершится ошибкой недостатка прав.
Что должно быть на руках перед настройкой в UnSpot
Три значения из Entra и произвольное название подключения. Дальше откройте «Настройка» → «Интеграции» → «Синхронизации» и в разделе «Синхронизация календарей» нажмите «Подключить» на карточке Microsoft 365:

Значения вводятся в открывшемся окне «Подключение Microsoft»:

Учтите две особенности формы: ClientId после создания подключения изменить нельзя (и один и тот же ClientId нельзя использовать в двух подключениях), а значение ClientSecret в поле не скрывается — вводите его, когда экран не видят посторонние.
Срок действия секрета
У секрета приложения есть срок годности, и в день его истечения синхронизация календарей остановится. Признак именно этой причины: карточка подключения помечается «Ошибка подключения», а у переговорных появляется «Календарь недоступен» — при том, что на стороне Exchange и в правах ничего не менялось.
Порядок действий: создайте в Entra новый секрет, затем на карточке подключения в UnSpot нажмите «Изменить» и вставьте новое значение. Пересоздавать подключение и переподключать календари переговорных не нужно. Поставьте себе напоминание за пару недель до даты истечения — Microsoft об этом не предупреждает.
Частые ошибки
| Что UnSpot показывает | Что проверить в Entra |
|---|---|
| «Некорректные учётные данные.» | значения ClientId, TenantId и ClientSecret; не истёк ли секрет; скопировано ли значение секрета целиком |
| «Недостаточно прав для сервисного аккаунта или приложения.» | оба разрешения выданы как Application permissions, а не Delegated; нажат Grant admin consent; в колонке Status стоит Granted; не отсекает ли ящики переговорных политика ApplicationAccessPolicy |
| «Client ID уже используется» | для этого приложения уже создано подключение в UnSpot — используйте его или зарегистрируйте отдельное приложение |
| Список переговорных пуст | заведены ли комнаты как ресурсные почтовые ящики; выдано ли разрешение Place.Read.All |
| Нужной переговорной нет в списке | её календарь уже подключён к другой переговорной в UnSpot, либо ящик не является ресурсным |
Применение разрешений в Microsoft иногда занимает несколько минут. Если всё выглядит правильно, а UnSpot всё ещё сообщает о недостатке прав, подождите и повторите сохранение.