如何为 Mule 4 中的 TLS 上下文设置提供动态 'path'?

How to provide dynamic 'path' for TLS context settings in Mule 4?

对于出站 HTTP 请求,我需要设置密钥库配置。密钥库包含客户端证书。 这是有效的,如果我将路径提供为 ;

${app.home}${tls.keystore.relativepath}${client.ssl.keystore}

这里; tls.keystore.relativepathclient.ssl.keystore properties 在属性文件中定义。

例如: 在属性文件中;

tls.keystore.relativepath=/keystore/
client.ssl.keystore=client_certificate.p12

但我的要求是, HTTP 请求是一个通用请求,该程序会将请求路由到不同的端点。因此,密钥存储文件在运行时也不同。

例如: 在属性文件中,我将定义;

client.ssl.keystore=client_certificate.p12
client2.ssl.keystore=client2_certificate.p12

为了在运行时确定'client'或'client2'字,我定义了一个变量,它检查请求和保持值作为'client'或client2'。

因此,为了在 TLS context/key 存储配置下定义 'path' 值,我尝试了几种组合。但运气不好。[1,2,3]

  1. ${app.home}${tls.keystore.relativepath}++#[p(vars.'app.name' ++'.'++'ssl.keystore')]

  2. keystore/ ++ p(vars.'app.name' ++'.'++'ssl.keystore')

  3. %dw 2.0

    输出application/java


    keystore/ ++ p(vars.'app.name' ++'.'++'ssl.keystore')

任何人都可以为我提供这个动态路径配置的解决方案吗?

您可以使用以下示例动态引用 属性

%dw 2.0
output application/json
var appName="test-app"
var keystore="client-cert.p12"
var finalProp=appName ++ keystore
---
Mule::p(finalProp)

然而,HTTP 请求者配置 (TLS) 的一部分不考虑动态值,需要引用静态 属性 或硬编码值。因此,您将不得不在流程中求助于多个 HTTP 请求程序组件,并根据客户端类型使用选择路由器进行相应的路由。