Propagación del contexto de la solicitud
Reflejar los encabezados y los parámetros de consulta de las solicitudes entrantes de la API de « HTTP » en las llamadas salientes a la API REST.
Visión general
OMS puede capturar los encabezados y los parámetros de consulta de las solicitudes entrantes de tipo « HTTP » y ponerlos a disposición durante toda la ejecución del servicio, lo que ofrece las siguientes ventajas:
- Reutilización de tokens
- Propagación del ID de correlación
- Modelos de seguridad basados en puertas de enlace
- Integraciones de MCP y API Gateway
Modelo de seguridad
La propagación del contexto de las solicitudes utiliza un modelo de seguridad basado en una lista blanca:
- Propagación de encabezados basada en una lista blanca
- Consentimiento explícito mediante la configuración
- Acceso de solo lectura para los clientes
- No se producen fugas automáticas en los colectores
Lista blanca de encabezados
Encabezados incluidos por defecto en la lista blanca :
Authorization, Content-Type, Accept, X-*
Estos encabezados están incluidos en la lista blanca de forma predeterminada:
Authorization- Tokens de autenticaciónContent-Type- Solicitar tipo de contenidoAccept- Preferencia de tipo de contenido de la respuestaX-*- Todos los encabezados que empiecen porX-comoX-Correlation-ID,X-Request-ID,X-API-Key
Puedes anular la lista blanca predeterminada configurando la siguiente propiedad:
yfs.rest.allowed.headers=Authorization,Content-Type,Accept,X-*,Custom-Header
#{h:} la sintaxis.Propagación de encabezados
Puedes anular los encabezados entrantes especificando un valor diferente en la definición del servicio.
<Header Name="Authorization" Value="#{h:authorization}"/><Header Name="Authorization" Value="Bearer my-static-token"/><Header Name="Authorization" Value="Bearer ${my.override.token}"/>Encabezados incluidos por defecto en la lista blanca :
Authorization, Content-Type, Accept, X-*
Estos encabezados están incluidos en la lista blanca de forma predeterminada:
Authorization- Tokens de autenticaciónContent-Type- Solicitar tipo de contenidoAccept- Preferencia de tipo de contenido de la respuestaX-*- Todos los encabezados que empiecen porX-comoX-Correlation-ID,X-Request-ID,X-API-Key
Puedes anular la lista blanca predeterminada configurando la siguiente propiedad:
yfs.rest.allowed.headers=Authorization,Content-Type,Accept,X-*,Custom-Header
#{h:} la sintaxis.Propagación de parámetros de consulta
Puedes pasar los parámetros de consulta entrantes a la llamada a la API REST saliente utilizando la #{q:paramName} sintaxis.
- `#{q:itemId}` - Propagates the `itemId` query parameter
- `#{q:page}` - Propagates the `page` query parameter
- `#{q:limit}` - Propagates the `limit` query parameter
También puedes utilizar valores estáticos («value»), propiedades ( ${property} ) o extraer datos de JSON/XML ($.json o /xpath) para los parámetros de consulta. Para obtener más información, consulte «Resolución dinámica de variables ».
Acceso programático
Puedes acceder a los encabezados de entrada y a los parámetros de consulta mediante código personalizado o extensiones de la interfaz de usuario utilizando la clase YCPRequestContextUtil de utilidad.
Métodos disponibles :
Obtener un encabezado específico :
String authHeader = YCPRequestContextUtil.getHeader(env, "Authorization");
Map<String, String> allHeaders = YCPRequestContextUtil.getAllHeaders(env);Obtener un parámetro de consulta específico :
String itemId = YCPRequestContextUtil.getQueryParameter(env, "itemId");
Map<String, String> allParams = YCPRequestContextUtil.getAllQueryParameters(env);Ejemplo de uso en código personalizado :
import com.yantra.yfs.japi.util.YCPRequestContextUtil;
public class MyCustomService {
public void execute(YFSEnvironment env, Document input) {
// Get Authorization header
String authToken = YCPRequestContextUtil.getHeader(env, "Authorization");
// Get correlation ID
String correlationId = YCPRequestContextUtil.getHeader(env, "X-Correlation-ID");
// Get query parameter
String itemId = YCPRequestContextUtil.getQueryParameter(env, "itemId");
// Use these values in your custom logic
if (authToken != null) {
// Process with auth token
}
}
}
Ejemplo completo
Escenario : Transmitir el token de autenticación, el ID de correlación y el parámetro de consulta a una API de inventario externa.
Solicitud recibida :
POST /executeFlow/checkInventory?itemId=ITEM001
Authorization: Bearer abc123
X-Correlation-ID: corr-789
Configuración de la definición del servicio :
Las llamadas REST salientes incluyen automáticamente
- El mismo token de autorización
- El mismo ID de correlación
- El mismo parámetro de consulta
No se necesita código Java. No es necesario manipular la carga útil.