CloudEvents şemasını kullanarak uç nokta doğrulama

Webhook'lar (web kancaları), Azure Event Grid'den olay almanın birçok yolu arasında yer alır. Yeni bir olay hazır olduğunda Event Grid hizmeti, istek gövdesindeki olay bilgileriyle yapılandırılmış uç noktaya bir HTTP isteği oluşturur.

Web kancalarını destekleyen diğer birçok hizmet gibi Event Grid de web kancası uç noktanızın sahipliğini bu uç noktaya olay göndermeye başlamadan önce kanıtlamanızı gerektirir. Bu gereksinim, kötü amaçlı bir kullanıcının uç noktanızı olaylarla dolup taşmasını önler.

CloudEvents v1.0 kullanarak uç nokta doğrulama

CloudEvents v1.0 , HTTP OPTIONS yöntemini kullanarak kendi kötüye kullanım koruma semantiğini uygular. Çıkış için CloudEvents şemasını kullandığınızda Event Grid, Event Grid doğrulama olay mekanizması yerine CloudEvents v1.0 kötüye kullanım korumasını kullanır.

CloudEvent v1.0 kötüye kullanım koruması

Bildirimlerin rastgele HTTP uç noktalarına kaydedilmesine ve teslimine izin veren herhangi bir sistem, kötü amaçlı olarak veya yanlışlıkla böyle istekler beklemeyen ve kayıt yapan tarafın böyle bir kayıt gerçekleştirme yetkisi olmayan bir sistemin adresini kaydedecek şekilde kötüye kullanılabilir. Aşırı durumlarda, rastgele bir web sitesine yönelik hizmet reddi saldırıları başlatmak için bir bildirim altyapısı kötüye kullanılabilir.

Gönderenin bu şekilde kötüye kullanılmasına karşı korumak için, meşru bir teslim hedefinin, ona gönderilen bildirimleri kabul ettiğini belirtmesi gerekir.

Aşağıdaki doğrulama el sıkışması, teslimat anlaşmasına ulaşmayı gerçekleştirmektedir. El sıkışma, kayıt zamanında hemen veya teslimden hemen önce bir "ön kontrol" isteği olarak yürütülebilir.

El sıkışmanın bir kimlik doğrulaması veya yetkilendirme bağlamı oluşturmayı hedeflemediğini anlamak önemlidir. Göndereni, trafiği beklemeyen bir hedefe yönlendirilmekten korumaya hizmet eder. Bu belirtim bir yetkilendirme modelinin kullanılmasını zorunlu kılsa da, bir web sitesi erişim denetimi uygulamaz ve Authorization üst bilgisini bu nedenle yoksayarsa, bu durum keyfi bir web sitesini istenmeyen trafikten korumak için yeterli değildir.

Teslim hedefleri kötüye kullanım koruma özelliğini desteklemeLIDIR. Bir hedef özelliği desteklemiyorsa, gönderen hedefe hiç göndermemeyi veya yalnızca çok düşük bir istek oranıyla göndermemeyi seçebilir.

Doğrulama isteği

Doğrulama isteği HTTP OPTIONS yöntemini kullanır. İstek, kaydettiğiniz tam kaynak hedef URI'sine gider. Gönderen, doğrulama isteğini kullanarak hedefe bildirim göndermek için izin ister ve istenen istek hızını (dakika başına istekler) bildirebilir. Teslim hedefi bir izin bildirimi ve izin verilen istek oranıyla yanıt verir. Burada, doğrulama isteğine dahil edilmesi için üst bilgi alanlarından birkaçı yer alır.

Web Kancası-İstek-Kaynak

WebHook-Request-Origin Üst bilgi doğrulama isteğine eklenmelidir ve bu gönderenden bildirim gönderme izni ister ve gönderen sistemi tanımlayan bir Etki Alanı Adı Sistemi (DNS) ifadesi içerir, örneğineventemitter.example.com. Değer, yalnızca belirli bir sistem adına hareket eden ve tek bir konak yerine tüm gönderen örneklerini özet olarak belirler.

El sıkışmadan sonra ve izin verildiyse, gönderen her teslim isteği için Origin istek üst bilgisini, bu üst bilginin değeriyle eşleşen bir değerle kullanmalıdır.

Örnek:

WebHook-Request-Origin: eventemitter.example.com

Doğrulama yanıtı

Ancak ve ancak teslim hedefi olayların teslimine izin verirse, isteğe WebHook-Allowed-Origin ve WebHook-Allowed-Rate üst bilgilerini ekleyerek yanıt vermek zorundadır. Teslim hedefi, geri çağırma yoluyla izin vermeyi seçerse yanıt başlıklarını saklar.

Teslim hedefi olayların teslimine izin vermiyorsa veya olayların teslimini beklemiyorsa ve yine de HTTP OPTIONS yöntemini işlerse, mevcut yanıt onay olarak yorumlanmamalıdır ve bu nedenle el sıkışması durum kodlarına dayanamaz. Teslim hedefi aksi takdirde HTTP OPTIONS yöntemini işlemiyorsa, SEÇENEKLER desteklenmiyor gibi HTTP durum kodu 405 ile yanıt vermelidir.

OPTIONS yanıtı, POST yöntemine izin verildiğini belirten Allow üst bilgisi içermelidir. Kaynakta diğer yöntemlere izin verilebilir, ancak işlevleri bu belirtim kapsamının dışındadır.

WebHook-İzin Verilen Kaynak

WebHook-Allowed-Origin başlığı, teslim hedefi kaynak hizmet tarafından bildirim teslimini kabul ettiğinde döndürülmelidir. Değeri, WebHook-Request-Origin üst bilgisinde sağlanan kaynak adı veya teslim hedefinin tüm kaynaklardan gelen bildirimleri desteklediğini belirten tek bir yıldız karakteri ('*') olmalıdır.

WebHook-Allowed-Origin: eventemitter.example.com

Veya

WebHook-Request-Origin: *

Önemli

Olay teslimi belirtimi için HTTP 1.1 Web Kancaları'ndaki kötüye kullanım koruması bölümüne bakın ve kötüye kullanım koruması hakkında daha fazla bilgi edinin.

Olay aboneliği doğrulama sorunlarını gidermeyi öğrenmek için bkz. Olay aboneliği doğrulama sorunlarını giderme.