Propagação do contexto da solicitação
Repassar os cabeçalhos e parâmetros de consulta das solicitações recebidas via HTTP para as chamadas de API REST enviadas.
Visão geral
O OMS pode capturar os cabeçalhos e parâmetros de consulta das solicitações recebidas via HTTP e disponibilizá-los durante toda a execução do serviço, proporcionando os seguintes benefícios:
- Reutilização de tokens
- Propagação do ID de correlação
- Modelos de segurança baseados em gateway
- Integrações do MCP e do API Gateway
Modelo de Segurança
A propagação do contexto da solicitação utiliza um modelo de segurança baseado em lista de permissões:
- Propagação de cabeçalhos com base em lista de permissões
- Aceitação explícita por meio da configuração
- Acesso somente para leitura para clientes
- Sem vazamento automático dos cabeçalhos
Lista de permissões de cabeçalhos
Cabeçalhos padrão incluídos na lista de permissões :
Authorization, Content-Type, Accept, X-*
Esses cabeçalhos estão na lista de permissões por padrão:
Authorization- Tokens de autenticaçãoContent-Type- Tipo de conteúdo da solicitaçãoAccept- Preferência quanto ao tipo de conteúdo da respostaX-*- Todos os cabeçalhos que começam comX-comoX-Correlation-ID,X-Request-ID,X-API-Key
Você pode substituir a lista de permissões padrão configurando a seguinte propriedade:
yfs.rest.allowed.headers=Authorization,Content-Type,Accept,X-*,Custom-Header
#{h:} da sintaxe.Propagação de cabeçalhos
Você pode substituir os cabeçalhos recebidos especificando um valor diferente na definição do serviço.
<Header Name="Authorization" Value="#{h:authorization}"/><Header Name="Authorization" Value="Bearer my-static-token"/><Header Name="Authorization" Value="Bearer ${my.override.token}"/>Cabeçalhos padrão incluídos na lista de permissões :
Authorization, Content-Type, Accept, X-*
Esses cabeçalhos estão na lista de permissões por padrão:
Authorization- Tokens de autenticaçãoContent-Type- Tipo de conteúdo da solicitaçãoAccept- Preferência quanto ao tipo de conteúdo da respostaX-*- Todos os cabeçalhos que começam comX-comoX-Correlation-ID,X-Request-ID,X-API-Key
Você pode substituir a lista de permissões padrão configurando a seguinte propriedade:
yfs.rest.allowed.headers=Authorization,Content-Type,Accept,X-*,Custom-Header
#{h:} da sintaxe.Propagação de parâmetros de consulta
Você pode propagar os parâmetros de consulta recebidos para a chamada de API REST de saída usando a #{q:paramName} sintaxe.
- `#{q:itemId}` - Propagates the `itemId` query parameter
- `#{q:page}` - Propagates the `page` query parameter
- `#{q:limit}` - Propagates the `limit` query parameter
Você também pode usar valores estáticos (“value”), propriedades ( ${property} ) ou extrair dados de JSON/XML ($.json ou /xpath) para os parâmetros de consulta. Para obter mais informações, consulte Resolução dinâmica de variáveis.
Acesso programático
Você pode acessar cabeçalhos de entrada e parâmetros de consulta programaticamente em código personalizado ou extensões da interface do usuário usando a classe YCPRequestContextUtil utilitária.
Métodos disponíveis :
Obter cabeçalho específico :
String authHeader = YCPRequestContextUtil.getHeader(env, "Authorization");
Map<String, String> allHeaders = YCPRequestContextUtil.getAllHeaders(env);Obter parâmetro de consulta específico :
String itemId = YCPRequestContextUtil.getQueryParameter(env, "itemId");
Map<String, String> allParams = YCPRequestContextUtil.getAllQueryParameters(env);Exemplo de uso em 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
}
}
}
Exemplo Completo
Cenário : Transmitir o token de autenticação, o ID de correlação e o parâmetro de consulta para uma API de inventário externa.
Solicitação recebida :
POST /executeFlow/checkInventory?itemId=ITEM001
Authorization: Bearer abc123
X-Correlation-ID: corr-789
Configuração da definição do serviço :
A chamada REST de saída inclui automaticamente
- O mesmo token de autorização
- O mesmo ID de correlação
- O mesmo parâmetro de consulta
Não é necessário código Java. Não é necessário manipular a carga útil.