Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Servicios de terceros

Solicitudes y respuestas de webhook

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.

Webhooks se han renombrado a HTTPS Endpoints sin cambios en el 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.

Dependiendo del servicio, los webhooks entrantes ofrecen varias formas de validar las solicitudes y personalizar la respuesta que Atlas App Services reenvía al servicio externo.

Para validar que una solicitud de webhook proviene de una fuente confiable, algunos servicios externos requieren que las solicitudes entrantes incorporen una string secreta de una de varias formas prescritas. Otros servicios, como el servicio HTTP, permiten que opcionalmente requieras la validación de la solicitud.

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.

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

Consider the following webhook request body and secret:

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>

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 comprobar 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'

App Services automatically passes a response object that represents the webhook's HTTP response as the second argument to webhook Function. The following table lists the available methods for modifying the response object:

Método
Arguments
Descripción

setStatusCode(code)

code entero

Establezca el código de estado de respuesta HTTP.

Ejemplo

response.setStatusCode(201);

setBody(body)

body cadena o BSON.Binary

Establecer el cuerpo de la respuesta HTTP.

If body is a string, it will be encoded to BSON.Binary before being returned.

Ejemplo

response.setBody(
"{'message': 'Hello, World!'}"
);

setHeader(name, value)

name string
value string

Establezca la respuesta HTTP encabezado especificado por name al valor proporcionado en el argumento value. Esto sobrescribe cualquier otro valor que pueda haberse asignado ya a ese encabezado.

Ejemplo

response.setHeader(
"Content-Type",
"application/json"
);

addHeader(name, value)

name string
value string

Establece la cabecera HTTP de respuesta especificada por name con el valor proporcionado en el argumento value. A diferencia de setHeader, esto no sobrescribe otros valores que ya hayan sido asignados a la cabecera.

Ejemplo

response.addHeader(
"Cache-Control",
"max-age=600"
);
response.addHeader(
"Cache-Control",
"min-fresh=60"
)

Volver

Llamar a una acción de servicio

En esta página