我正在尝试构建一个简单的OIM Web服务适配器。
OIM -> calls ICF WS -> calls Partner Link WS
从BPEL,我有以下映射
/ns2:create/userAccount/__PASSWORD__ -> /ns3:createUser/password
PASSWORD是加密的,所以我在调用Partner Link WS之前添加了解密密码的策略,如here所述
问题来自OIM文档中的特定指令
在composite.xml文件中配置SOA组合。为此,请添加 webservice标记中的以下条目 需要密码解密。
文档中提供的示例如下所示
<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先生in this thread说
(...)该政策应附加到目标合作伙伴链接,而不是 连接器复合(...)
这有点道理。所以我在这里尝试了几种变体,比如
<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.>
然后,请求带有加密密码的合作伙伴链接(这是无用的)。
我该如何正确配置这个东西?我在网上找不到任何体面的例子。即使这个例子(来自一个问题&#34;回答&#34;)显然是错误的。
答案 0 :(得分: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>