Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Webhooks são uma dentre várias maneiras de receber eventos da Grade de Eventos do Azure. Quando um novo evento está pronto, o serviço Grade de Eventos faz o POST de uma solicitação HTTP para o ponto de extremidade configurado com as informações do evento no corpo da solicitação.
Como muitos outros serviços que dão suporte a webhooks, a Grade de Eventos do Azure exige que você comprovar a "propriedade" de seu ponto de extremidade do Webhook antes de começar a entrega de eventos para esse ponto de extremidade. Esse requisito impede que um usuário mal-intencionado inunde seu ponto de extremidade com eventos.
Validação de ponto de extremidade com CloudEvents v 1.0
CloudEvents v1.0 implementa sua própria semântica de proteção contra abusos usando o método HTTP OPTIONS. Ao usar o esquema CloudEvents para saída, a Grade de Eventos usa com a proteção de abuso do CloudEvents v1.0 em vez do mecanismo de evento de validação da Grade de Eventos.
Proteção contra abuso do CloudEvent v1.0
Qualquer sistema que permita o registro e a entrega de notificações para pontos de extremidade HTTP arbitrários pode potencialmente ser abusado, de modo que alguém registra de maneira mal-intencionada ou inadvertidamente o endereço de um sistema que não espera essas solicitações e para o qual a parte registradora não está autorizada a executar esse registro. Em casos extremos, uma infraestrutura de notificação pode ser abusada para iniciar ataques de negação de serviço contra um site arbitrário.
Para proteger o remetente de ser abusado de tal forma, um destino de entrega legítimo precisa indicar que concorda com as notificações que estão sendo entregues a ele.
Chegar ao contrato de entrega é realizado usando o handshake de validação a seguir. O handshake pode ser executado imediatamente no momento do registro ou como uma solicitação de "simulação" imediatamente antes de uma entrega.
É importante entender que o handshake não visa estabelecer um contexto de autenticação ou autorização. Ele serve apenas para proteger o remetente de ser instruído a enviar para um destino que não está esperando o tráfego. Embora essa especificação determine o uso de um modelo de autorização, esse mandato não será suficiente para proteger qualquer site arbitrário contra tráfego indesejado se esse site não implementar o controle de acesso e, portanto, ignorar o cabeçalho Authorization.
Os destinos de entrega DEVEM dar suporte ao recurso de proteção contra abusos. Se um destino não der suporte ao recurso, o remetente PODERÁ optar por não enviar para o destino ou enviar apenas a uma taxa de solicitação muito baixa.
Solicitação de validação
A solicitação de validação usa o método HTTP OPTIONS. A solicitação é direcionada para o URI de destino exato do recurso que está sendo registrado. Com a solicitação de validação, o remetente solicita ao destino permissão para enviar notificações e pode declarar uma taxa de solicitação desejada (solicitações por minuto). O destino de entrega responderá com uma instrução de permissão e a taxa de solicitação permitida. Aqui estão alguns dos campos de cabeçalho para inclusão na solicitação de validação.
WebHook-Request-Origin
O cabeçalho WebHook-Request-Origin DEVE ser incluído na solicitação de validação e solicita permissão para enviar notificações desse remetente e contém uma expressão DNS (Sistema de Nomes de Domínio) que identifica o sistema de envio, por exemplo eventemitter.example.com. O valor destina-se a identificar sumariamente todas as instâncias de remetente que atuam em nome de um determinado sistema e não de um host individual.
Após o handshake e se a permissão tiver sido concedida, o remetente DEVERÁ usar o cabeçalho de solicitação Origin para cada solicitação de entrega, com o valor correspondente ao desse cabeçalho.
Exemplo:
WebHook-Request-Origin: eventemitter.example.com
Resposta de validação
Se e somente se o destino de entrega permitir a entrega dos eventos, ele DEVERÁ responder à solicitação incluindo os cabeçalhos WebHook-Allowed-Origin e WebHook-Allowed-Rate. Se o destino de entrega optar por conceder permissão por retorno de chamada, ele reterá os cabeçalhos de resposta.
Se o destino de entrega não permite a entrega dos eventos ou não espera a entrega de eventos e, no entanto, lida com o método HTTP OPTIONS, a resposta existente não deve ser interpretada como consentimento e, portanto, o handshake não pode contar com códigos de status. Se o destino de entrega não manipular o método HTTP OPTIONS, ele DEVERÁ responder com o código de status HTTP 405, como se opções não fossem compatíveis.
A resposta de OPTIONS DEVE incluir o cabeçalho Allow que indica o método POST que está sendo permitido. Outros métodos PODEM ser permitidos no recurso, mas sua função está fora do escopo dessa especificação.
WebHook-Allowed-Origin
O cabeçalho WebHook-Allowed-Origin DEVE ser retornado quando o destino de entrega concordar com a entrega de notificação pelo serviço de origem. Seu valor DEVE ser o nome de origem fornecido no cabeçalho WebHook-Request-Origin ou um caractere de asterisco singular ('*'), indicando que o destino de entrega dá suporte a notificações de todas as origens.
WebHook-Allowed-Origin: eventemitter.example.com
Ou
WebHook-Request-Origin: *
Importante
Para obter mais informações sobre a proteção contra abuso, consulte Proteção contra abuso nos Web Hooks HTTP 1.1 para especificação de entrega de eventos.
Conteúdo relacionado
Consulte o seguinte artigo para saber como solucionar problemas de validações de assinatura de evento: Solucionar problemas de validações de assinatura de evento.