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ção
  • Content-Type - Tipo de conteúdo da solicitação
  • Accept - Preferência quanto ao tipo de conteúdo da resposta
  • X-* - Todos os cabeçalhos que começam com X- como X-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
Observação: Apenas os cabeçalhos incluídos na lista de permissões estão disponíveis por meio #{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.

Exemplo: Use o cabeçalho de entrada :
<Header Name="Authorization" Value="#{h:authorization}"/>
Exemplo: Substituir por um valor estático :
<Header Name="Authorization" Value="Bearer my-static-token"/>
Exemplo: Substituir com a propriedade :
<Header Name="Authorization" Value="Bearer ${my.override.token}"/>
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ção
  • Content-Type - Tipo de conteúdo da solicitação
  • Accept - Preferência quanto ao tipo de conteúdo da resposta
  • X-* - Todos os cabeçalhos que começam com X- como X-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
Observação: Apenas os cabeçalhos incluídos na lista de permissões estão disponíveis por meio #{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.

Exemplos:
- `#{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");
Obter todos os cabeçalhos :
Map<String, String> allHeaders = YCPRequestContextUtil.getAllHeaders(env);

Obter parâmetro de consulta específico :

String itemId = YCPRequestContextUtil.getQueryParameter(env, "itemId");
Obter todos os parâmetros da consulta :
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
        }
    }
}
Observação: Somente os cabeçalhos incluídos na lista de permissões estão acessíveis. Os parâmetros de consulta estão sempre disponíveis.

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.