Кратко о главном: Microsoft объявила о полном прекращении поддержки Exchange Web Services (EWS) для Exchange Online․ С 1 октября 2026 года запросы к EWS будут блокироваться‚ а окончательное отключение произойдёт 1 апреля 2027 года․ Для всех решений‚ использующих EWS – в т․ч․ для автоматизации «записей гадалки» в системе Урени – это означает необходимость миграции на Microsoft Graph API или на альтернативные локальные решения․
Что такое EWS и почему он важен для «гадалки»?
EWS (Exchange Web Services) – кросс‑платформенный API‚ позволяющий программно работать с элементами почтового ящика Exchange: письмами‚ календарём‚ контактами‚ задачами и т․д․ В системе Урени (платформа для автоматизации предсказаний и записи результатов гаданий) уже несколько лет используется скрипт‚ который:
- Получает доступ к почтовому ящику «Гадалка@company․com» через EWS;
- Создаёт событие в календаре с датой и результатом предсказания;
- Сохраняет копию предсказания в виде письма‑черновика;
- Экспортирует полученные данные в 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‑операции:
- Получить токен доступа через
client_credentials(приложение) илиauthorization_code(пользователь)․ - Создать событие в календаре:
POST https://graph․microsoft․com/v1․0/users/{id}/events․ - Сохранить предсказание как черновик письма:
POST https://graph․microsoft․com/v1․0/users/{id}/messagesс полемisDraft:true․ - Экспортировать данные в CSV – можно оставить текущий код‚ просто заменив источник данных на ответы Graph․
Пошаговый план миграции для команды Урени
Подготовка инфраструктуры
- Создать Azure AD Application (App Registration) с правами
Mail․ReadWrite‚Calendars․ReadWrite‚Mail․Send(если понадобится отправка)․ - Сгенерировать клиентский секрет (или сертификат) и сохранить его в безопасном хранилище (Azure Key Vault‚ HashiCorp Vault)․
- Обновить политику
EWSEnabledтолько до 1 октября 2026 г․‚ чтобы обеспечить временный доступ в случае задержки миграции․
Переписывание кода
- Выбор SDK – рекомендуется использовать Microsoft Graph ․NET SDK (или Python‚ JavaScript в зависимости от текущего стека)․
- Авторизация – реализовать получение токена через
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; - Создание события – пример:
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); - Сохранение черновика письма – пример:
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); - Экспорт в CSV – логика остаётся прежней; меняется только источник данных (получаемый объект
EventвместоEWSItem)․
Тестирование и валидация
- Создать отдельный тестовый ящик
gadalka-test@company․comи выполнить скрипт в режиме «dry‑run»․ - Проверить‚ что события появляются в календаре‚ а черновики – в папке «Черновики»․
- Сравнить CSV‑вывод с прежним результатом (поле
EventIdзаменяется наidGraph)․ - Включить мониторинг запросов через Azure Monitor → Application Insights․
Переход в продакшн
- Отключить временный доступ к EWS (
EWSEnabled = false) после успешного теста․ - Обновить расписание задач (например‚ в Azure Automation) на использование нового скрипта․
- Уведомить бизнес‑пользователей о дате перехода и о возможных небольших изменениях формата данных․
Что делать‚ если миграция невозможна?
Для организаций‚ которым по техническим или регуляторным причинам нельзя перейти на 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
Если у вас возникнут вопросы по миграции или нужна помощь в написании кода – обращайтесь к нашей технической поддержке․