Importante
Servicios de terceros y notificaciones push obsoletos
Los servicios de terceros y las notificaciones push en App Services han quedado obsoletos en favor de la creación de puntos finales HTTP que usan dependencias externas en funciones.
Los webhooks se han renombrado como puntos finales HTTPS sin cambios en su comportamiento. Debe migrar los webhooks existentes.
Los servicios existentes continuarán funcionando hasta el de septiembre 30 2025de.
Dado que los servicios de terceros y las notificaciones push ya no se utilizan, se han eliminado de forma predeterminada de la interfaz de usuario de App Services. Si necesita administrar un servicio de terceros o una notificación push existente, puede volver a agregar las configuraciones a la interfaz de usuario siguiendo estos pasos:
En la navegación izquierda, debajo del Manage sección, haga clic en App Settings.
Habilite el interruptor junto a Temporarily Re-Enable 3rd Party Services y luego guarde los cambios.
Overview
Según el servicio, los webhooks entrantes ofrecen varias formas de validar solicitudes y personalizar la respuesta que Atlas App Services envía al servicio externo.
Métodos de validación de solicitudes
Para validar que una solicitud de webhook proviene de una fuente confiable, algunos servicios externos requieren que las solicitudes entrantes incorporen una cadena secreta de una de varias maneras prescritas. Otros servicios, como el servicio HTTP, permiten solicitar la validación de la solicitud de forma opcional.
Hay dos tipos de Request Validation para webhooks: Verificación defirma de carga útil y secreto como parámetro de consulta.
Se requiere HTTP/1.1 o superior al realizar solicitudes.
Nota
Para máxima seguridad, genere programáticamente el secret cadena que utiliza un paquete seguro como el módulo secretos de PythonAsegúrese de no publicar el secreto ni incluirlo en su sistema de control de versiones.
Verificación de la firma del payload
La opción de validación de solicitud Verify Payload Signature requiere que las solicitudes entrantes incluyan un código hexadecimal.
Hash HMAC SHA-256 generado a partir del cuerpo de la solicitud y la secret cadena en el X-Hook-Signature encabezado.
Ejemplo
Considere el siguiente cuerpo de solicitud de webhook y secreto:
const body = { "message":"MESSAGE" } const secret = 12345
La siguiente función Atlas genera el hash para este body secrety:
// Generate an HMAC request signature exports = function(secret, body) { // secret = the secret validation string // body = the webhook request body return utils.crypto.hmac(EJSON.stringify(body), secret, "sha256", "hex"); } // Returns: "828ee180512eaf8a6229eda7eea72323f68e9c0f0093b11a578b0544c5777862"
El valor hash debe asignarse al encabezado de solicitud HTTP X-Hook-Signature en cada solicitud:
X-Hook-Signature:sha256=<hex-encoded-hash>
Para probar que la solicitud fue firmada correctamente, podríamos ejecutar el siguiente comando curl:
curl -X POST \ -H "Content-Type: application/json" \ -H "X-Hook-Signature:sha256=828ee180512eaf8a6229eda7eea72323f68e9c0f0093b11a578b0544c5777862" \ -d '{"message":"MESSAGE"}' \ <webhook URL>
Secreto como parámetro de consulta
La Require Secret as Query Param opción de validación de solicitud requiere que las solicitudes entrantes incluyan la secret cadena especificada como un parámetro de consulta adjunto al final de la URL.
Ejemplo
Considere un webhook configurado para usar un valor secret de 12345. Todas las solicitudes deben dirigirse a la URL del webhook con el secreto como parámetro de consulta.
<webhook URL>?secret=12345
Para probar que las solicitudes a esta URL se verifican correctamente, podríamos ejecutar el siguiente comando curl:
curl -H "Content-Type: application/json" \ -d '{ "message": "HELLO" }' \ -X POST '<webhook URL>?secret=12345'
Objeto de respuesta de webhook
App Services pasa automáticamente un objeto response que representa la respuesta HTTP del webhook como segundo argumento de la función del webhook. La siguiente tabla enumera los métodos disponibles para modificar el objeto response:
Método | Arguments | Descripción | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
|
| ||||||||||
|
| Establecer el cuerpo de la respuesta HTTP. Si Ejemplo | |||||||||
| name stringvalue string | Establezca el encabezado de respuesta HTTP especificado por Ejemplo | |||||||||
| name stringvalue string | Establece la cabecera HTTP de respuesta especificada por Ejemplo |