Seguridad
Por defecto, todos los extremos de una aplicación VCR son de acceso público. La dirección security bloque en vcr.yml le permite controlar el acceso por ruta mediante tres niveles de acceso y la aplicación opcional de autenticación.
Se recomienda encarecidamente configurar reglas de seguridad para todos los puntos finales de su aplicación. Dejar los puntos finales sin protección expone tu aplicación a accesos no autorizados, abusos y costos inesperados. Como mínimo, establece un nivel de acceso predeterminado restrictivo y abre explícitamente sólo las rutas que deban ser públicas (como las devoluciones de llamadas de webhook de Vonage).
Niveles de acceso
| Nivel | Descripción |
|---|---|
public | No requiere autenticación. Cualquiera puede acceder al punto final. |
private | No accesible desde el exterior de la plataforma. Solo pueden llamarlo los servicios internos de VCR. |
authenticated | Requiere credenciales de API de Vonage válidas en el Authorization (HTTP Basic: base64(api_key:api_secret)). La plataforma valida las credenciales antes de reenviar la solicitud a su aplicación. |
Configuración
instance:
security:
access: private
override:
- path: "/webhooks/*"
access: public
- path: "/api/**"
access: authenticated
auth-method: vonage_basic
accessestablece el por defecto nivel de acceso para todas las rutas que no coincidan con una anulación.overridees una lista de reglas específicas de la ruta. Las reglas se evalúan en orden; la coincidencia más específica gana.auth-methodes necesario cuandoaccessesauthenticated. El único valor admitido esvonage_basic.
Comodines de ruta
| Comodín | Partidos | Ejemplo |
|---|---|---|
* | Un único segmento de ruta | /users/*/profile coincide con /users/123/profile pero no /users/123/settings/profile |
** | Cualquier número de segmentos del trayecto | /api/** coincide con /api/v1, /api/v1/users, /api/v1/users/123etc. |
Los puntos finales Webhook requieren acceso sin restricciones
Las devoluciones de llamadas de la plataforma de Vonage (llamadas entrantes, mensajes entrantes, recibos de entrega, etc.) se originan fuera de tu instancia. Estos puntos finales deben configurarse en publicde lo contrario, la plataforma de Vonage no podrá llegar a ellos y tus proveedores no recibirán eventos.
instance:
security:
access: private
override:
- path: "/onCall"
access: public
- path: "/onMessage"
access: public
- path: "/api/**"
access: authenticated
auth-method: vonage_basic
Cómo funciona el acceso autenticado
Cuando una solicitud llega a un authenticated camino, el controlador de tráfico:
- Comprueba que un
Authorizationestá presente. Si falta, devuelve401 Unauthorized. - Valida las credenciales con el servicio de autenticación de Vonage y confirma que la persona que llama pertenece a la misma cuenta de Vonage que el propietario de la instancia. Si no son válidas o no coinciden, devuelve
403 Forbidden. - Si la validación pasa, reenvía la solicitud a su aplicación sin cambios.
En vonage_basic utiliza la autenticación HTTP Basic. La persona que llama debe enviar su clave de API de Vonage y su secreto de API codificados como una credencial de autenticación básica:
Authorization: Basic base64(api_key:api_secret)
La mayoría de los clientes HTTP gestionan esto automáticamente cuando usted proporciona un nombre de usuario y una contraseña:
// Example: calling an authenticated VCR endpoint from a client
const response = await fetch('https://my-app.use1.runtime.vonage.cloud/api/data', {
headers: {
'Authorization': 'Basic ' + btoa(`${API_KEY}:${API_SECRET}`),
},
});
El código de tu aplicación no necesita validar las credenciales por sí mismo: la plataforma aplica la autenticación antes de que la solicitud llegue a tu gestor. Si necesita identificar al autor de la llamada dentro de su gestor, la plataforma inyecta el ID de cuenta verificado a través del campo x-neru-apiaccountid de cabeza:
app.get('/api/data', async (req, res) => {
const accountId = req.headers['x-neru-apiaccountid'];
res.json({ accountId });
});
Herencia de métodos Auth
Si un override conjuntos de entrada access: authenticated pero omite auth-methodhereda el nivel superior auth-method valor. Si no se establece ninguno de los dos, la API de despliegue rechazará la configuración.
instance:
security:
access: public
auth-method: vonage_basic # inherited by all authenticated overrides
override:
- path: "/admin/**"
access: authenticated # uses vonage_basic from above
- path: "/api/**"
access: authenticated # also uses vonage_basic from above