0

对于出站 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 上下文/密钥存储配置下定义“路径”值,我尝试了几种组合。但没有运气。[1,2,3]

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

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

  3. %dw 2.0

    输出应用程序/java


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

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

4

1 回答 1

0

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

%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 请求者组件,并使用选择路由器根据客户端类型进行相应的路由。

于 2021-03-25T06:49:48.533 回答