gpt4 book ai didi

java - 如何在 Soa Suite 12c 中覆盖 REST 绑定(bind)引用的 OWSM 策略?

转载 作者:行者123 更新时间:2023-12-01 08:55:12 24 4
gpt4 key购买 nike

我正在开发 Oracle 融合中间件 12.1.3

在我的组合中,我添加了一个“Rest Binding”外部引用,为此我添加了oracle/wss_http_token_client_policy并覆盖了csf-key em> 属性。

在文件中,它看起来像:

myComposite.BAS:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Generated by Oracle SOA Modeler version 12.1.3.0.0 at [01-06-2016 16:01]. -->
<composite name="MyCompositeBAS"
revision="9.8.8"
label="2016-06-01_16-01-48_442"
mode="active"
state="on"
xmlns="http://xmlns.oracle.com/sca/1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy"
xmlns:ui="http://xmlns.oracle.com/soa/designer/"
xmlns:sca-ext="http://xmlns.oracle.com/sca/1.0-ext">

[.....]

<component name="MyCompositeBASProcess" version="2.0">
<implementation.bpel src="BPEL/MyCompositeBASProcess.bpel"/>
<componentType>
<service name="mycompositebasprocess_client" ui:wsdlLocation="WSDLs/MyCompositeBASProcess.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/GDDSOA/MyCompositeBAS/MyCompositeBASProcess#wsdl.interface(MyCompositeBASProcess)"
callbackInterface="http://xmlns.oracle.com/GDDSOA/MyCompositeBAS/MyCompositeBASProcess#wsdl.interface(MyCompositeBASProcessCallback)"/>
</service>
<reference name="CMProxyRS" ui:wsdlLocation="WSDLs/CMProxyRS.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/GDDSOA/MyCompositeBAS/CMProxyRS#wsdl.interface(CMProxyRS_ptt)"/>
</reference>
</componentType>
<property name="bpel.config.oneWayDeliveryPolicy" type="xs:string" many="false">async.persist</property>
</component>

<reference name="CMProxyRS" ui:wsdlLocation="WSDLs/CMProxyRS.wsdl">
<interface.wsdl interface="http://xmlns.oracle.com/GDDSOA/MyCompositeBAS/CMProxyRS#wsdl.interface(CMProxyRS_ptt)"/>
<binding.rest config="Adapters/CMProxyRS.wadl" location="http://myUatServer/cmproxy/resources/v2/" />
</reference>

[....]

<wire>
<source.uri>MyCompositeBASProcess/CMProxyRS</source.uri>
<target.uri>CMProxyRS</target.uri>
</wire>
</composite>
<小时/>

wsm- assembly.xml:

<?xml version="1.0" encoding="windows-1252" ?>
<orawsp:wsm-assembly xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy">
<sca11:policySet xmlns:sca11="http://docs.oasis-open.org/ns/opencsa/sca/200912" name="policySet"
appliesTo="SCA-REST-REFERENCE()" attachTo="REFERENCE('CMProxyRS')" orawsp:highId="2"
xml:id="SCA-REST-REFERENCE__REFERENCE__CMProxyRS__">
<wsp:PolicyReference xmlns:wsp="http://www.w3.org/ns/ws-policy"
DigestAlgorithm="http://www.w3.org/ns/ws-policy/Sha1Exc"
URI="oracle/wss_http_token_client_policy" orawsp:status="enabled" orawsp:id="2">
<orawsp:OverrideProperty xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy" orawsp:name="csf-key"
orawsp:value="cmproxy.rest"/>
</wsp:PolicyReference>
</sca11:policySet>
</orawsp:wsm-assembly>
<小时/>

这在我设置了基本身份验证的 UAT 和 PROD 环境中运行良好。

我的 DEV 环境问题:REST 服务不需要任何身份验证。 如何更改或删除 <wsp:PolicyReference ...>组合何时部署在 DEV 环境中?

在网络上查找时,我发现了几个覆盖 PolicyReference 的示例,但针对的是 SOA Suite 11g 上的“SOAP 绑定(bind)”外部引用。我没有找到任何针对 REST 服务和 12c 的特定内容。

我尝试改编我在网上找到的示例:

** 覆盖“配置计划”中的策略 **

我编写了一个专用于 DEV 环境的配置计划:

<?xml version="1.0" encoding="UTF-8"?>
<SOAConfigPlan xmlns:jca="http://platform.integration.oracle/blocks/adapter/fw/metadata"
xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
xmlns:orawsp="http://schemas.oracle.com/ws/2006/01/policy"
xmlns:edl="http://schemas.oracle.com/events/edl" xmlns="http://schemas.oracle.com/soa/configplan">

<composite name="MyCompositeBAS">
<import>
<searchReplace>
<search/>
<replace/>
</searchReplace>
</import>
<reference name="CMProxyRS">
<binding type="rest">
<attribute name="location">
<replace>http://myDevServer/cmproxy/resources/v2/</replace>
</attribute>
<wsp:PolicyReference URI="oracle/no_authentication_client_policy" orawsp:category="security" orawsp:status="enabled"/>
</binding>
</reference>
</composite>
</SOAConfigPlan>

或者,我还尝试“禁用”(在配置计划中)wsm-assembly.xml 中定义的策略。将我的配置计划中的最后一个 block 替换为:

    [....]
<reference name="CMProxyRS">
<binding type="rest">
<attribute name="location">
<replace>http://myDevServer/cmproxy/resources/v2/</replace>
</attribute>
<wsp:PolicyReference orawsp:category="security" orawsp:status="disabled" URI="oracle/wss_username_token_client_policy"/>
<!--wsp:PolicyReference URI="oracle/no_authentication_client_policy" orawsp:category="security" orawsp:status="enabled"/ -->
</binding>
</reference>
[....]

但是它不起作用。我知道配置计划已应用,因为我可以看到组合尝试访问 myDevServer 上的 REST 服务器,但“原来”的政策并没有被取消。这在企业管理器上得到了证实:在CMProxyRS上策略选项卡,oracle/wss_http_token_client_policy仍然可见,EffectiveEnabled已检查。

覆盖“composite.xml”中的策略

我还尝试直接在 composite.xml 中重新定义策略看看是否可以覆盖 wsm-assembly.xml 中定义的内容文件。我尝试了几种方法,各有不同:

composite.xml:

[....]
<binding.rest config="Adapters/CMProxyRS.wadl" location="http://myDevServer/cmproxy/resources/v2/" >
<wsp:PolicyReference URI="oracle/wss_http_token_client_policy" orawsp:category="security" orawsp:status="disabled"/>
</binding.rest>
[....]

11g 和 12c 之间的差异

我在网上找到的示例是为 11g 设计的,而不是为 12c 设计的。当您通过 jDeveloper GUI 设置策略时,唯一可能不同的行为如下:

  • 在 12c 中,<wsp:PolicyReference >标签添加在wsm-assembly.xml中文件,包裹在 <sca11:policySet > 中;
  • 在 11g 中,似乎 <wsp:PolicyReference >标签直接添加在composite.xml中文件。 (这就是为什么我在之前的测试中尝试直接在组合中设置策略...)

所以我也尝试添加 <sca11:policySet >在我的配置计划中,但失败了......

命名空间的差异

如果您照顾wsp: ,你会看到:

  • wsm-assembly.xml ,它在这里定义:xmlns:wsp="http://www.w3.org/ns/ws-policy"
  • composite.xmlconfiguration plan ,它在这里定义:xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"

所以我也尝试将命名空间强制为 http://www.w3.org/ns/ws-policy在我的配置计划中,但部署失败(即未应用配置计划)。

我不知道如何才能走得更远......

有人可以分享一下想法吗?有人在不同环境中成功查询具有不同策略的 REST 服务吗?

非常感谢。

最佳答案

在 DEV 环境中部署项目后,

1) 转到 Oracle 融合中间件控制台。2)打开项目。3) 在 OWSM 策略选项卡下,您可以添加或删除此策略。4) 删除后保存 session 并重试。

还有另一种选择。

您可以通过复制 oracle/wss_http_token_client_policy 类型的允许所有类型策略来创建自己的新策略,而不是使用 oracle/wss_http_token_client_policy 策略。

在此新策略中,您可以添加您在 weblogic 上创建的用户或组。

在 DEV 服务器上部署项目时,请勿在此新策略中添加任何用户或组,默认情况下这将允许所有用户访问此服务。

关于java - 如何在 Soa Suite 12c 中覆盖 REST 绑定(bind)引用的 OWSM 策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42073862/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com