我正在尝试构建一个简单的 OIM Webservice 适配器。
OIM -> calls ICF WS -> calls Partner Link WS
从 BPEL,我有以下映射
/ns2:create/userAccount/__PASSWORD__ -> /ns3:createUser/password
密码是加密的,所以我添加了一个策略来在调用合作伙伴链接 WS 之前解密密码,如此处所述
问题来自 OIM 文档中的此特定说明
在composite.xml 文件中配置SOA 组合。为此,请在需要密码解密的 web 服务的标签中添加以下条目。
文档中提供的示例如下所示
<wsp:PolicyReference URI="oimcp/WS_CONNECTOR_OUTBOUND"
orawsp:category="security" orawsp:status="enabled"/>
<property name="passcode" type="xs:string">abcd1234</property>
<property name="password.field.xpath.locations"
type="xs:string">/ns6:ListOfUser/ns6:User/ns6:Password</property>
<property name="target.payload.namespaces"
type="xs:string">ns6=urn:/acme/xml/password</property>
当您提供错误信息时,target.payload.namespaces 示例由错误消息提供
<12/03/2015 19h24min21s UTC> <Error> <oracle.soa.bpel.engine.ws>
<BEA-000000> <got FabricInvocationException java.lang.IllegalArgumentException:
target.payload.namespaces property validation failed.
Correct format is : ns1=http://a.com,ns2=http://b.com
此外,Grigoryev 先生在这个帖子中说
(...) 策略应附加到目标合作伙伴链接,而不是连接器组合 (...)
这是有道理的。所以我在这里尝试了几种变体,比如
<property name="password.field.xpath.locations" type="xs:string">
/ns3:createUser/password
</property>
<property name="target.payload.namespaces" type="xs:string">
ns3=http://ws.xyz.com
</property>
但我在这个过程中得到的只是这样的消息
<12/03/2015 19h54min24s UTC> <Warning> <ORG.IDENTITYCONNECTORS.GENERICWS>
<BEA-000000>
<Node /soap:Envelope/soap:Body//ns3:createUser/password is null.
Ignoring decryption of masked fields.>
然后,请求进入合作伙伴链接,密码加密(这是无用的)。
我应该如何正确配置这个东西?我在网上找不到任何像样的例子。即使这个例子(来自一个被称为“已回答”的问题)也显然是错误的。