Отключение Exchange Web Services (EWS) в Exchange Online: последствия и миграция на Microsoft Graph API для автоматизации гадалки в системе Урени

Microsoft убивает EWS в Exchange Online. Дедлайн октября 2026 года уже близко. Узнайте, как без боли переехать на Graph API и сохранить работу скриптов Урени.

Кратко о главном: Microsoft объявила о полном прекращении поддержки Exchange Web Services (EWS) для Exchange Online․ С 1 октября 2026 года запросы к EWS будут блокироваться‚ а окончательное отключение произойдёт 1 апреля 2027 года․ Для всех решений‚ использующих EWS – в т․ч․ для автоматизации «записей гадалки» в системе Урени – это означает необходимость миграции на Microsoft Graph API или на альтернативные локальные решения․


Что такое EWS и почему он важен для «гадалки»?

EWS (Exchange Web Services) – кросс‑платформенный API‚ позволяющий программно работать с элементами почтового ящика Exchange: письмами‚ календарём‚ контактами‚ задачами и т․д․ В системе Урени (платформа для автоматизации предсказаний и записи результатов гаданий) уже несколько лет используется скрипт‚ который:

  1. Получает доступ к почтовому ящику «Гадалка@company․com» через EWS;
  2. Создаёт событие в календаре с датой и результатом предсказания;
  3. Сохраняет копию предсказания в виде письма‑черновика;
  4. Экспортирует полученные данные в CSV‑файл для аналитики․

Все эти операции реализованы через EWS Managed API и аутентификацию по OAuth 2․0 (или старый Basic Auth в ранних версиях)․

Хронология отключения EWS в Exchange Online

  • 2018 г․ – Microsoft объявила‚ что EWS больше не будет получать новые функциональные обновления․
  • 2023 г․ – официальное объявление о плановом отключении EWS в Exchange Online․
  • 1 октября 2026 г․ – начало блокировки запросов к EWS от сторонних приложений․ Администраторы могут временно включить доступ через список EWSEnabled (whitelist)․
  • 1 апреля 2027 г․ – окончательное отключение EWS без исключений․

Для локальных развертываний Exchange Server (2016‚ 2019‚ 2022) EWS остаётся доступным‚ однако новые функции и патчи безопасности для него в облаке больше не выпускаются․

Как отключение EWS отразится на автоматизации «гадалки» в Урени

Сценарий‚ описанный в пункте 1‚ полностью зависит от EWS․ После 1 октября 2026 г․ любой запрос к https://outlook․office365․com/EWS/Exchange․asmx будет отвечать ошибкой 403 (Access Denied)․ Последствия:

  • Прекращение записи предсказаний – новые события в календаре не будут создаваться․
  • Потеря синхронизации – существующие скрипты не смогут обновлять черновики и экспортировать новые данные․
  • Снижение надёжности – без обновлений безопасности EWS становится потенциальной точкой входа для атак․
  • Необходимость пересмотра архитектуры – потребуется переписать бизнес‑логику на поддерживаемый API․

Куда мигрировать? Microsoft Graph API как основной заменитель

Microsoft Graph – единый REST‑интерфейс‚ покрывающий почти все возможности EWS и добавляющий новые функции (например‚ beta‑endpoints для расширенного календаря)․ Основные преимущества:

  • Поддержка OAuth 2․0 и Azure AD Conditional Access;
  • Регулярные обновления безопасности и новых функций;
  • Единый токен доступа для всех сервисов Office 365 (Mail‚ Calendar‚ Contacts‚ Teams и др․);
  • Более современный JSON‑формат вместо XML‑SOAP‚ используемого в EWS․

Для «гадалки» в Урени потребуется реализовать следующие Graph‑операции:

  1. Получить токен доступа через client_credentials (приложение) или authorization_code (пользователь)․
  2. Создать событие в календаре: POST https://graph․microsoft․com/v1․0/users/{id}/events․
  3. Сохранить предсказание как черновик письма: POST https://graph․microsoft․com/v1․0/users/{id}/messages с полем isDraft:true․
  4. Экспортировать данные в CSV – можно оставить текущий код‚ просто заменив источник данных на ответы Graph․

Пошаговый план миграции для команды Урени

Подготовка инфраструктуры

  • Создать Azure AD Application (App Registration) с правами Mail․ReadWrite‚ Calendars․ReadWrite‚ Mail․Send (если понадобится отправка)․
  • Сгенерировать клиентский секрет (или сертификат) и сохранить его в безопасном хранилище (Azure Key Vault‚ HashiCorp Vault)․
  • Обновить политику EWSEnabled только до 1 октября 2026 г․‚ чтобы обеспечить временный доступ в случае задержки миграции․

Переписывание кода

  1. Выбор SDK – рекомендуется использовать Microsoft Graph ․NET SDK (или Python‚ JavaScript в зависимости от текущего стека)․
  2. Авторизация – реализовать получение токена через Microsoft․Identity․Client (MSAL)․ Пример (C#):
    var app = ConfidentialClientApplicationBuilder
     ․Create(clientId)
     ․WithClientSecret(clientSecret)
     ․WithTenantId(tenantId)
     ․Build;
    var result = await app․AcquireTokenForClient(new[] { "https://graph․microsoft;com/․default" })
     ․ExecuteAsync;
  3. Создание события – пример:
    var @event = new Event
    {
     Subject = "Гадание: " + prediction․Title‚
     Body = new ItemBody
     {
     ContentType = BodyType․Text‚
     Content = prediction․Description
     }‚
     Start = new DateTimeTimeZone
     {
     DateTime = prediction․Date․ToString("o")‚
     TimeZone = "UTC"
     }‚
     End = new DateTimeTimeZone
     { DateTime = prediction․Date․AddHours(1)․ToString("o")‚
     TimeZone = "UTC"
     }
    };
    
    await graphClient․Users["gadalka@company․com"]․Events
     ;Request
     ․AddAsync(@event);
  4. Сохранение черновика письма – пример:
    var message = new Message
    {
     Subject = "Гадание: " + prediction․Title‚
     Body = new ItemBody
     { Content = $"

    {prediction․Description}

    " }‚ IsDraft = true }; await graphClient․Users["gadalka@company․com"]․Messages ․Request ․AddAsync(message);
  5. Экспорт в CSV – логика остаётся прежней; меняется только источник данных (получаемый объект Event вместо EWSItem)․

Тестирование и валидация

  • Создать отдельный тестовый ящик gadalka-test@company․com и выполнить скрипт в режиме «dry‑run»․
  • Проверить‚ что события появляются в календаре‚ а черновики – в папке «Черновики»․
  • Сравнить CSV‑вывод с прежним результатом (поле EventId заменяется на id Graph)․
  • Включить мониторинг запросов через Azure Monitor → Application Insights․

Переход в продакшн

  1. Отключить временный доступ к EWS (EWSEnabled = false) после успешного теста․
  2. Обновить расписание задач (например‚ в Azure Automation) на использование нового скрипта․
  3. Уведомить бизнес‑пользователей о дате перехода и о возможных небольших изменениях формата данных․

Что делать‚ если миграция невозможна?

Для организаций‚ которым по техническим или регуляторным причинам нельзя перейти на Graph‚ Microsoft предлагает:

  • Extended Security Updates (ESU) – платная подписка‚ позволяющая получать критические патчи для Exchange Server 2016/2019 до 2027 года․
  • Развернуть локальный Exchange Server (on‑prem) и использовать EWS в закрытой сети без доступа к Интернету․
  • В качестве «переходного» решения использовать SMTP‑интеграцию (отправка писем) и iCal‑файлы для создания событий‚ но без полной функциональности EWS․

Риски и меры по их снижению

Риск Последствия Меры предосторожности
Блокировка EWS до завершения миграции Простои автоматизации‚ потеря данных Включить временный whitelist EWSEnabled до 1 октября 2026 г․
Неправильные разрешения Azure AD Отказ в доступе к календарю/почте Проверить API permissions и выполнить Grant admin consent․
Утечка токенов Неавторизованный доступ к ящику «Гадалка» Хранить секреты в Azure Key Vault‚ использовать Managed Identities․
Несоответствие форматов данных Ошибки при экспорте в CSV Обновить парсеры‚ использовать Newtonsoft․Json или System․Text․Json․

Лучшие практики при работе с Microsoft Graph в контексте «гадалки»

  • Минимальный набор прав – запрашивайте только те разрешения‚ которые действительно нужны (principle of least privilege)․
  • Обновление токенов – используйте refresh token или client_credentials с коротким TTL (1 hour)․
  • Обработка ошибок – учитывайте коды 429 (Too Many Requests) и реализуйте экспоненциальную задержку․
  • Логирование – сохраняйте ID запросов (request-id) для упрощённого аудита;
  • Тестирование в sandbox‑окружении – Microsoft предоставляет Graph Explorer для отладки запросов․

Отключение EWS в Exchange Online – неизбежный шаг Microsoft‚ направленный на унификацию доступа к сервисам через Microsoft Graph и повышение уровня безопасности․ Для проекта «гадалка в Урени» это значит‚ что текущие автоматизированные процессы‚ построенные на EWS‚ перестанут работать уже в октябре 2026 года․ Однако переход на Graph API предоставляет новые возможности (расширенный календарный функционал‚ интеграцию с Teams‚ Power Automate) и гарантирует поддержку в течение многих лет․

Рекомендация: начать миграцию как можно раньше‚ создать отдельный тестовый стенд‚ задокументировать все используемые EWS‑операции и заменить их на эквивалентные Graph‑вызовы․ При правильном планировании и соблюдении лучших практик процесс будет плавным‚ а система «гадалки» получит более надёжную и безопасную основу․


Для более детального изучения темы см․ официальные блоги Microsoft:

  • Exchange Online EWS – Your Time is Almost Up
  • Microsoft Graph documentation
  • Upgrade paths for Exchange Server

Если у вас возникнут вопросы по миграции или нужна помощь в написании кода – обращайтесь к нашей технической поддержке․