0

我正在尝试构建一个简单的 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.> 

然后,请求进入合作伙伴链接,密码加密(这是无用的)。

我应该如何正确配置这个东西?我在网上找不到任何像样的例子。即使这个例子(来自一个被称为“已回答”的问题)也显然是错误的。

4

1 回答 1

0

问题解决了

<wsp:PolicyReference URI="oimcp/WS_CONNECTOR_OUTBOUND" orawsp:category="security" orawsp:status="enabled"/>

<property name="passcode" type="xs:string">passcode</property>

<property name="password.field.xpath.locations" type="xs:string">/password</property>

<property name="target.payload.namespaces" type="xs:string">ns3=http://ws.xyz.com</property>

请参阅https://community.oracle.com/message/12947258

于 2015-03-13T18:49:24.553 回答