2017-02-06 2 views
0

Ich arbeite an der Oracle Fusion Middleware 12.1.3.Wie kann die OWSM-Richtlinie einer REST-Bindungsreferenz in Soa Suite 12c überschrieben werden?

In meinem Composite, fügte ich eine "Rest Binding" Externe Referenz, für die ich ein oracle/wss_http_token_client_policy und overrid die csf-Schlüssel Eigenschaft hinzugefügt.

In den Dateien, es sieht aus wie:

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> 

Und das funktioniert gut in meinen UAT und PROD-Umgebungen, wo eine Standard-Authentifizierung eingestellt ist.

Mein Problem für die DEV-Umgebung: Der REST-Dienst benötigt keine Authentifizierung. Wie kann ich die <wsp:PolicyReference ...> ändern oder entfernen, wenn das Composite in der DEV-Umgebung bereitgestellt wird?

auf dem Netz der Suche, fand ich mehrere Beispiele PolicyReference- außer Kraft zu setzen, aber für „SOAP Bindings“ Externe Referenz auf SOA Suite 11g. Ich habe weder für REST-Dienste noch für 12c etwas Bestimmtes gefunden.

Ich versuchte, die Proben, die ich im Internet gefunden anzupassen:

** Überschreiben Sie die Politik in der „Konfigurationsplan“ **

ich einen Konfigurationsplan schrieb an die DEV-Umgebung gewidmet:

<?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> 

Oder habe ich versucht, auch auf "disable" (im Konfigurationsplan) die Richtlinie festgelegt in den wsm-assembly.xml durch den letzten Block von meinem Config Plan ersetzt durch:

[....] 
    <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> 
    [....] 

Aber es funktioniert nicht. Ich weiß, dass der Konfigurationsplan angewendet wird, weil ich sehen kann, dass der Verbund versucht, auf den REST-Server unter myDevServer zuzugreifen, aber die "ursprüngliche" Richtlinie wird nicht entfernt. Und dies bestätigt auf der Enterprise Manager: auf der Registerkarte CMProxyRS Richtlinien, die oracle/wss_http_token_client_policy ist immer noch sichtbar, Effective und Enabled sind überprüft.

überschreiben Sie die Politik in dem „composite.xml“

Ich habe auch versucht, die Politik direkt im composite.xml neu zu definieren, um zu sehen, ob es möglich ist, außer Kraft zu setzen, was in der wsm-assembly.xml Datei definiert ist.Ich habe versucht, mehrere Möglichkeiten, variierend auf:

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> 
[....] 

Unterschiede zwischen 11g und 12c

Die Proben, die ich im Internet gefunden wurden 11g entworfen, nicht für 12c. Das einzige Verhalten, das abweichen kann, wenn Sie die Politik durch den JDeveloper GUI gesetzt, wie:

  • In 12c, der <wsp:PolicyReference >-Tag wird in der wsm-assembly.xml Datei hinzugefügt, umwickelt mit in einem <sca11:policySet >;
  • In 11g scheint es, dass das <wsp:PolicyReference > Tag direkt in der composite.xml Datei hinzugefügt wird. (Und deshalb habe ich versucht, die Politik direkt in dem Verbund in meinem vorherigen Test zu setzen ...)

So auch ich versucht, die <sca11:policySet > in meiner Konfiguration Plan hinzuzufügen, aber es funktioniert nicht ...

Unterschiede in den Namespaces

Wenn Sie kümmern sich um die wsp: nehmen, werden Sie sehen, dass:

  • in wsm-assembly.xml, es ist definiert sich hier: xmlns:wsp="http://www.w3.org/ns/ws-policy"
  • in composite.xml und die configuration plan wird hier definiert: xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"

So auch, habe ich versucht, den Namespace an die http://www.w3.org/ns/ws-policy in meine Config-Plan zu erzwingen, aber die Bereitstellung fehlschlägt (dh die Konfiguration Plan wird nicht angewendet).

Ich weiß nicht, wie ich weiter ...

gehen

jemand eine Idee teilen können? Ist es jemandem möglich, REST-Dienste mit unterschiedlichen Richtlinien in verschiedenen Umgebungen abzufragen?

Vielen Dank.

Antwort

1

Nachdem Sie das Projekt auf DEV-Umgebung bereitgestellt haben, dann

1) Gehen Sie zu Oracle Fusion Middleware-Konsole. 2) Öffnen Sie das Projekt. 3) Auf der Registerkarte OWSM-Richtlinien können Sie diese Richtlinie hinzufügen oder entfernen. 4) Speichern Sie die Sitzung und versuchen Sie es erneut.

Es gibt eine andere Option.

Anstatt der Verwendung von Oracle/wss_http_token_client_policy Politik eine neue Ihre eigene Politik durch Kopieren eines erlauben alle Typ Politik oracle/wss_http_token_client_policy Art erstellen können.

In dieser neuen Richtlinie können Sie die Benutzer oder Gruppen hinzufügen, die Sie in weblogic erstellt haben.

Wenn Sie das Projekt auf dem DEV-Server bereitstellen, fügen Sie in dieser neuen Richtlinie keine Benutzer oder Gruppen hinzu, und standardmäßig können alle Benutzer auf diesen Dienst zugreifen.

+0

Hallo, danke für die Antwort. Tatsächlich habe ich Ihre erste Lösung verwendet, aber es war zu langweilig, die Richtlinie in der Konsole bei jeder Bereitstellung manuell zu überschreiben. Also schrieb ich ein WLST-Skript, um die Richtlinie automatisch zu entfernen. Aber ich werde deinen zweiten Vorschlag versuchen, wenn ich Zeit habe. Vielen Dank. –

Verwandte Themen