Ověření koncového bodu pomocí schématu CloudEvents
Webhooky představují jeden z mnoha způsobů, jak přijímat události z Azure Event Gridu. Jakmile je nová událost připravená, služba Event Grid odešle požadavek HTTP na nakonfigurovaný koncový bod s informacemi o události v textu požadavku.
Stejně jako řada dalších služeb, které podporují webhooky, služba Event Grid vyžaduje, abyste před zahájením doručování událostí do tohoto koncového bodu prokázali vlastnictví koncového bodu webhooku. Tento požadavek brání škodlivému uživateli v zahlcení koncového bodu událostmi.
Ověření koncového bodu pomocí CloudEvents v1.0
CloudEvents v1.0 implementuje vlastní sémantiku ochrany před zneužitím pomocí metody HTTP OPTIONS . Když pro výstup použijete schéma CloudEvents, služba Event Grid místo mechanismu událostí ověření služby Event Grid používá ochranu před zneužitím CloudEvents v1.0.
Ochrana před zneužitím CloudEvent v1.0
Jakýkoli systém, který umožňuje registraci a doručování oznámení libovolným koncovým bodům HTTP, může být potenciálně zneužitý tak, že někdo úmyslně nebo neúmyslně zaregistruje adresu systému, který takové žádosti neočekává a pro který nemá registrační strana oprávnění k provedení takové registrace. Vextrémních službách může být v extrémních případech zneužita infrastruktura oznámení ke spuštění útoků na dostupnost služby na libovolný web.
Aby bylo možné chránit odesílatele před zneužitím takovým způsobem, musí legitimní cíl doručení indikovat, že souhlasí s doručováním oznámení.
Dosažení smlouvy o doručení je realizováno pomocí následujícího ověřovacího handshakeu. Metodu handshake je možné provést okamžitě v době registrace nebo jako předběžný požadavek bezprostředně před doručením.
Je důležité si uvědomit, že handshake nemá za cíl vytvořit kontext ověřování nebo autorizace. Slouží pouze k ochraně odesílatele před odesláním oznámení do cíle, který neočekává provoz. I když tato specifikace vyžaduje použití autorizačního modelu, tento mandát nestačí k ochraně libovolného webu před nežádoucím provozem, pokud tento web neimplementuje řízení přístupu, a proto ignoruje hlavičku Authorization
.
Cíle doručení BY MĚLY podporovat funkci ochrany před zneužitím. Pokud cíl tuto funkci nepodporuje, může se odesílatel rozhodnout, že se do cíle vůbec neodesílá nebo odešle jenom s velmi nízkou frekvencí požadavků.
Žádost o ověření
Požadavek na ověření používá metodu HTTP OPTIONS . Požadavek se přesměruje na přesný identifikátor URI cíle prostředku, který se registruje. Při žádosti o ověření se odesílatel zeptá cíle, aby mohl odesílat oznámení, a může deklarovat požadovanou míru požadavků (žádosti za minutu). Cíl doručení bude reagovat příkazem oprávnění a povolenou rychlostí požadavků. Tady je několik polí hlaviček pro zahrnutí do žádosti o ověření.
WebHook-Request-Origin
Hlavička WebHook-Request-Origin
musí být zahrnuta do žádosti o ověření a požaduje oprávnění odesílat oznámení od tohoto odesílatele a obsahuje výraz DNS (Domain Name System), který identifikuje odesílající systém, například eventemitter.example.com
. Hodnota je určena k sumarizaci identifikace všech instancí odesílatele, které se chovají jménem určitého systému, a ne individuálního hostitele.
Po použití metody handshake a v případě udělení oprávnění musí odesílatel použít hlavičku Origin
požadavku pro každou žádost o doručení s hodnotou odpovídající této hlavičce.
Příklad:
WebHook-Request-Origin: eventemitter.example.com
Odpověď na ověření
Pokud cíl doručení povolí doručení událostí, musí na žádost odpovědět zahrnutím WebHook-Allowed-Origin
hlaviček.WebHook-Allowed-Rate
Pokud se cíl doručení rozhodne udělit oprávnění zpětnému volání, zadrží hlavičky odpovědi.
Pokud cíl doručení nepovoluje doručení událostí nebo neočekává doručení událostí a přesto zpracovává metodu HTTP OPTIONS, stávající odpověď by neměla být interpretována jako souhlas, a proto handshake nemůže spoléhat na stavové kódy. Pokud cíl doručení jinak nezpracuje metodu HTTP OPTIONS, měla by reagovat stavovým kódem HTTP 405, jako by možnosti nebyly podporovány.
Odpověď OPTIONS BY MĚLA obsahovat hlavičku Allow
označující povolenou metodu POST. U prostředku mohou být povoleny jiné metody, ale jejich funkce je mimo rozsah této specifikace.
WebHook-Allowed-Origin
Hlavička WebHook-Allowed-Origin
musí být vrácena, když cíl doručení souhlasí s doručením oznámení službou původu. Jeho hodnota musí být buď název původu WebHook-Request-Origin
zadaný v hlavičce, nebo znak hvězdičky (*), který označuje, že cíl doručení podporuje oznámení ze všech zdrojů.
WebHook-Allowed-Origin: eventemitter.example.com
Nebo
WebHook-Request-Origin: *
Důležité
Další informace o ochraně před zneužitím naleznete v tématu Ochrana před zneužitím v HTTP 1.1 Web Hooks for event delivery spec.
Související obsah
V následujícím článku se dozvíte, jak řešit potíže s ověřováním odběru událostí: Řešení potíží s ověřováním odběru událostí.