Проверка конечных точек с помощью схемы CloudEvents
Веб-перехватчики — это один из многих способов получения событий из службы "Сетка событий Azure". Когда новое событие будет готово, служба сетки событий отправляет HTTP-запрос в настроенную конечную точку с информацией о событии в тексте запроса.
Как и многие другие службы, поддерживающие веб-перехватчики, служба "Сетка событий" требует, чтобы вы подтвердили право собственности на конечную точку веб-перехватчика до того, как служба начнет доставку событий в эту конечную точку. Это требование не позволяет пользователю-злоумышленнику переполнить вашу конечную точку событиями.
Проверка конечной точки с помощью CloudEvents версии 1.0
CloudEvents версии 1.0 реализует собственную семантику защиты от нарушений с помощью метода HTTP OPTIONS. При использовании схемы CloudEvents для вывода служба "Сетка событий" используется с защитой CloudEvents версии 1.0 вместо механизма событий проверки Сетки событий.
Защита от злоупотреблений CloudEvent версии 1.0
Любая система, которая позволяет регистрировать и отправлять уведомления в произвольные конечные точки HTTP, может быть злоупотреблять таким образом, чтобы злоумышленник или непреднамеренно регистрировал адрес системы, которая не ожидает таких запросов и для которых регистрация не авторизована для выполнения такой регистрации. В крайних случаях инфраструктуру уведомлений можно использовать для запуска атак типа "отказ в обслуживании" на произвольный веб-сайт.
Чтобы защитить отправителя от злоупотреблений таким образом, необходимо указать, что он согласен с уведомлениями, передаваемыми ему.
Достижение соглашения о доставке реализуется с помощью следующего подтверждения проверки. Подтверждение может быть выполнено немедленно во время регистрации или как запрос предварительной проверки непосредственно перед доставкой.
Важно понимать, что подтверждение не стремится установить контекст проверки подлинности или авторизации. Он служит только для защиты отправителя от отправки в место назначения, которое не ожидает трафика. Хотя эта спецификация требует использования модели авторизации, этот мандат недостаточно для защиты любого произвольного веб-сайта от нежелательного трафика, если этот веб-сайт не реализует управление доступом и поэтому игнорирует Authorization
заголовок.
Целевые показатели доставки должны поддерживать функцию защиты от злоупотреблений. Если целевой объект не поддерживает эту функцию, отправитель МОЖЕТ не отправлять в целевой объект или отправлять только с низкой скоростью запроса.
Запрос на проверку
Запрос проверки использует метод HTTP OPTIONS . Запрос направляется в точный URI целевого ресурса, зарегистрированный. При запросе проверки отправитель запрашивает целевой объект для отправки уведомлений, и он может объявить нужную скорость запроса (запросы в минуту). Целевой объект доставки будет отвечать с помощью инструкции разрешения и разрешенной частоты запросов. Вот несколько полей заголовка для включения в запрос проверки.
Источник веб-перехватчика
Заголовок WebHook-Request-Origin
должен быть включен в запрос проверки и запрашивает разрешение на отправку уведомлений от этого отправителя и содержит выражение системы доменных имен (DNS), которое определяет систему отправки, например eventemitter.example.com
. Это значение предназначено для сводной идентификации всех экземпляров отправителей, которые действуют от имени определенной системы, а не отдельного узла.
После подтверждения и предоставления разрешения отправитель должен использовать Origin
заголовок запроса для каждого запроса доставки со значением, соответствующим этому заголовку.
Пример:
WebHook-Request-Origin: eventemitter.example.com
Ответ проверки
Если и только если целевой объект доставки разрешает доставку событий, он ДОЛЖЕН ответить на запрос, включая WebHook-Allowed-Origin
заголовки и WebHook-Allowed-Rate
заголовки. Если целевой объект доставки выбирает предоставление разрешения обратным вызовом, он удерживает заголовки ответа.
Если целевой объект доставки не разрешает доставку событий или не ожидает доставки событий и, тем не менее, обрабатывает метод HTTP OPTIONS, существующий ответ не должен интерпретироваться как согласие, поэтому подтверждение не может полагаться на коды состояния. Если целевой объект доставки в противном случае не обрабатывает метод HTTP OPTIONS, он ДОЛЖЕН отвечать с кодом состояния HTTP 405, как если бы параметры не поддерживались.
Ответ OPTIONS ДОЛЖЕН содержать заголовок, указывающий Allow
разрешенный метод POST. Другие методы МОГУТ быть разрешены в ресурсе, но их функция выходит за рамки этой спецификации.
WebHook-Allowed-Origin
Заголовок WebHook-Allowed-Origin
должен быть возвращен, когда целевой объект доставки согласен с доставкой уведомлений службой источника. Его значение должно быть именем источника, предоставленным в WebHook-Request-Origin
заголовке, или символом звездочки ('*'), указывающим, что целевой объект доставки поддерживает уведомления со всех источников.
WebHook-Allowed-Origin: eventemitter.example.com
Or
WebHook-Request-Origin: *
Внимание
Дополнительные сведения о защите от злоупотреблений см. в статье "Защита от злоупотреблений" в веб-перехватчиках HTTP 1.1 для спецификации доставки событий.
Связанный контент
См. следующую статью, чтобы узнать, как устранять неполадки с проверкой подписки на события: устранение неполадок с проверкой подписки на события.