Verificar una llamada de retorno
El vcr El objeto del SDK te permite comprobar si una llamada de retorno que recibe tu aplicación procede de la plataforma Vonage Cloud Runtime. Todas las solicitudes enviadas a tu instancia desde la plataforma Vonage Cloud Runtime incluirán un JWT firmado con la clave privada de tu aplicación de Vonage en el Authorization de cabeza.
Importante: Si tu aplicación utiliza los proveedores de suscripción de VCR (Mensajes, Voz o Conversación), los webhooks se redirigen a través del enrutador de devoluciones de llamada de VCR. En este caso, el Authorization El encabezado solo autentica al propio enrutador de devolución de llamada; lo que hace es no garantizar que el evento original proceda de Vonage o que la carga útil no haya sido alterada durante la transmisión. Para verificar plenamente el origen de estos webhooks, también debes validar el X-Vonage-Webhook-Auth-Token encabezado tal y como se describe a continuación.
Puedes comprobar si esto se aplica a tu aplicación consultando la URL de tu webhook. Si comienza por cualquiera de las siguientes URL, tu aplicación está recibiendo webhooks a través del enrutador de callbacks de VCR y debes seguir los pasos de verificación adicionales que se indican en esta guía:
https://callback-router.euw1.runtime.vonage.cloud/https://callback-router.use1.runtime.vonage.cloud/https://callback-router.apse1.runtime.vonage.cloud/https://callback-router.apse2.runtime.vonage.cloud/
Si has configurado manualmente las URL de tus webhooks para que apunten directamente a la URL de tu instancia pública, esto no te afecta.
Recupera tu clave secreta de Webhook de Vonage
Para validar el X-Vonage-Webhook-Auth-Token En el encabezado, necesitarás tu clave secreta del webhook de Vonage.
- Inicie sesión en Panel de control de la API de Vonage.
- Accede a la configuración de tu aplicación.
- Localice el Clave secreta de Webhook (también conocido como «Secreto de firma») en la configuración de seguridad.
- Guarda este valor de forma segura en las variables de entorno de tu aplicación (por ejemplo, como
VONAGE_WEBHOOK_SECRET). No lo incluyas de forma fija en tu código fuente.
Verify el JWT del enrutador de devolución de llamada (Authorization encabezado)
Uso vcr.verifyAuth() para confirmar que la solicitud fue enviada por el enrutador de devolución de llamada VCR. Este paso sigue siendo válido y debe mantenerse como primera capa de verificación.
Firma del método:
vcr.verifyAuth(token: string)
Uso verifyAuth en una función de middleware. Se producirá un error si el token no es válido.
// Express Example
const authMiddleware = (req, res, next) => {
const token = req.headers['authorization'];
if (!token) {
return res.status(401).json({ error: 'Missing Authorization header' });
}
try {
vcr.verifyAuth(token);
next();
} catch (error) {
return res.status(401).json({ error: error.message });
}
};
Verifica el token de origen de Vonage (X-Vonage-Webhook-Auth-Token encabezado)
En el caso de las aplicaciones que utilicen el enrutador de callbacks de VCR, debes validar además el X-Vonage-Webhook-Auth-Token encabezado. Este token está firmado por Vonage y te permite confirmar criptográficamente que el evento procede realmente de Vonage y que no ha sido alterado.
const jwt = require('jsonwebtoken');
const verifyVonageOrigin = (req, res, next) => {
const vonageToken = req.headers['x-vonage-webhook-auth-token'];
if (!vonageToken) {
return res.status(401).json({ error: 'Missing X-Vonage-Webhook-Auth-Token header' });
}
try {
// Verify the token using your Vonage Webhook Secret
jwt.verify(vonageToken, process.env.VONAGE_WEBHOOK_SECRET, { algorithms: ['HS256'] });
next();
} catch (error) {
return res.status(401).json({ error: 'Invalid Vonage origin token: ' + error.message });
}
};
¿No utilizas el enrutador de devolución de llamada VCR?
Si tu aplicación recibe webhooks directamente (es decir, si la URL de tu webhook no empieza por https://callback-router.euw1.runtime.vonage.cloud/), el Authorization El encabezado incluye el JWT original firmado por Vonage, emitido por la plataforma de Vonage, no por VCR.
En este caso, Debes validar el token utilizando tu clave secreta de Webhook de Vonage..