Der Oracle Web Service Manager (OWSM) ist eine Sicherheitsplattform für die Zugriffssicherung und -verwaltung von Diensten (Services), die durch eine WSDL beschrieben werden. Der OWSM stellt durch eine deklarative Definition Sicherheitsregeln (Policies) wie z.B. Web Service Security in Form von sogenannten Policy Enforcement Points (PEP) einer Java/J2EE Laufzeitumgebung zur Verfügung. Somit sind keine programmatischen Änderungen an der Konsumer- sowie an der Providerseite notwendig. Die PEPs werden als Gateways beziehungsweise als Client- oder Server-Agenten definiert. In diesen PEPs werden die Sicherheitsregeln umgesetzt.
Beispiel: ein Client möchte einen verschlüsselten Aufruf auf Basis von WS Security zu einem Serviceendpoint (z.B. Web Service) tätigen. Auf der Clientseite (Konsumer) wird die Verschlüsselung (XML-Encryption) z.B. über einen Client-Agenten getätigt. Der nun verschlüsselte Request wird via SOAP zum Serviceendpunkt gesendet und auf der Serverseite (Provider) wieder durch einen weiteren PEP entschlüsslet (XML-Decryption).
Der OWSM unterstützt im wesentlichen 4 Typen von Client-Agenten:
J2SE Client Agenten für (standalone) Java Applikationen die auf (Web) Services zugreifen, wie typischerweise Swing Applikationen,
J2EE Client-Agenten, die konfiguriert werden für J2EE Module wie Servlet, JSP, JSF, EJB die Services aufrufen,
Client-Agenten für BPEL und ESB (WSIF-Agenten), die als Clients Dienste aufrufen und
Axis Client-Agenten für Web Services Clients, die das AXIS Framework 1.1 und 1.4 J2EE Clients nutzen
Im nachfolgenden wird kurz beschrieben, wie ein J2SE Client-Agent genutzt werden kann:
Hinzufügen eines Client-Agenten im OWSM
Definition einer Sicherheitsregel für den Client-Agenten im OWSM
Installation des Client-Agenten auf einem Client
Konfiguration des Client-Agenten mit dem Oracle J2SE Web Service Client
Setzen des Classpath für den Oracle J2SE Web Service Client
1.) Hinzufügen eines Client-Agenten im OWSM
Im Web Service Manager Control (z.B. http://iamoel.oracle.vm:7777/ccore/index.jsp) wird unter Manage Policies eine neue Client-Agenten-Komponente (Add New Component) hinzugefügt. Diese OWSM Installation ist die zentrale Stelle, indem alle Policies definiert werden.
Folgende Werte für den Client-Agenten verwenden:
Component type = Client Agent
Container type = OC4J
3.) Installation des Client-Agenten auf einem Client
Der OWSM muss auf jedem Client zwecks Agenteninstallation installiert werden. Der Agent fängt den Clientaufruf ab und holt sich die Policies vom Policy Manager, der unter Punkt 1 installiert worden ist, ab und führt die Sicherheitsregeln auf der Clientseite aus.
Folgende Parameter müssen im ORACLE_HOME/owsm/bin/agent.properties für die Client-Agenteninstallation auf der Clientseite gesetzt werden:
- agent.componentType –> OC4JClientInterceptor
- agent.containerType –> OC4J
- agent.containerVersion –> 10.1.3
- client.home –> der Pfad, indem der Client-Agent installiert werden soll zum Beispiel /oracle/product/clientagent
- agent.component.id –> die Komponenten-ID, die beim Hinzufügen des Client-Agenten unter Punkt 1 erzeugt worden ist
Als nächstes wird über die Kommandozeile mittels wsmadmin installAgent der Agent in das zuvor angegebene client.home Verzeichnis installiert.
4.) Konfiguration des Client-Agenten mit dem Oracle J2SE Web Service Client
Erzeuge durch den Web Service Proxy Wizard im JDeveloper einen J2SE Client der den Web Service aufruft .
Im Wizard wird die WSDL Datei angegben, die für den J2SE Client verwendet wird.
Nach Beendigung des Wizards werden diverse Java Files herausgeneriert, u.a.:
Das (MyWebService1)SoapHttp_Stub.xml File kann über einen weiteren Wizard (Secure Proxy) im JDeveloper erzeugt werden. Dabei alle Checkboxeinträge im Wizard entfernen.
WICHTIG: die herausgenierte Datei (MyWebService1)SoapHttp_Stub.xml muss sich im Verzeichnis befinden, wo die (MyWebService1)SoapHttp_Stub.class Datei sich befindet, hier im ...proxy\runtime Folder. Änderungen nur an dieser Datei im Verzeichnis vornehmen.
In der (MyWebService1)SoapHttp_Stub.xml ist nun die Runtime Sektion zu änderen, von
<runtime enabled="security">
<security>
<inbound/>
<outbound/>
</security>
</runtime>
nach
<runtime enabled="owsm">
<owsm init-home="/oracle/product/clientagent/owsm/config/interceptors/C0003003"/>
</runtime>
5.) Setzen des Classpath für den Oracle J2SE Web Service Client
Bevor der Web Service Client ausgeführt werden kann, müssen folgende JAR Dateien in den Classpath aufgenommen werden:
- alle JAR-Dateien aus dem Verzeichnis, wo der Clientagent installiert worden ist:
client.home/owsm/lib/extlib - ORACLE_HOME/owsm/lib/cfluent-log4.j.jar
- JDBC JAR File
- ORACLE_HOME/jlib/orail8n.jar und ORACLE_HOME/jlib/ojmisc.jar
Mögliche Fehler:
Classpath nicht richtig gesetzt oder (MyWebService1)SoapHttp_Stub.xml wurde nach Änderung des Classpath überschrieben
Verwendete Versionen: Oracle SOA Suite 10.1.3.3 sowie JDeveloper 10.1.3.3