Donnerstag, 6. Februar 2014

Handson: Basic Authentication zwischen OSB und SOA-Suite (Teil 3)

In den letzten beiden Kapiteln wurde ein Web Service im Oracle Service Bus mit Basic Autentication abgesichert, der Zugriff darauf aus dem JDeveloper getestet und die WSDL lokal abgelegt. In diesem Teil wird der Web Service in das Composite eingebunden.
Aktuell kann der JDeveloper auf keine WSDL's zugreifen, die per Basic Authentication abgesichert sind (s. z.B. auch hier). Neben der WSDL wird auch das XML-Schema lokal benötigt (sofern man es nicht ohnehin schon irgendwo liegen hat).


Die URL für das Schema bekommt man in der WSDL unter dem Attribut schemaLocation. Diese wird im Browser geöffnet.


Auch das Schema wird lokal abgespeichert, bitte auch hier auf die Dateierweiterung achten.


Jetzt soll der Web Service in das SOA Composite eingebunden werden. Hierzu wird ein Web Service aus der Component Palette in den Bereich für die External References der SOA Suite gezogen.


Im 'Create Web Service' Wizard wird die WSDL über den 'Find existing WSDLs' Button hinzugefügt.


Hier wird die lokal gespeicherte WSDL ausgewählt.


Über die Option 'Localize external references' wird das XML-Schema gleich mitkopiert.


Die WSDL und das Schema werden damit in das Projekt übernommen.


Um den Service jetzt im Composite zu nutzen, wird ein Mediator eingesetzt. Hierzu wird ein Mediator von rechts aus dem Bereich 'Service Components' in dem Components-Bereich des Composites gezogen.


Der Mediator soll ja das gleiche Interface umsetzen wie der ursprüngliche Web Service, als .'Interface Definition from WSDL' auswählen und 'OK'.


Weiter mit dem 'Find existing WSDLs' Button


In der oberen Combobox 'Application' auswählen, dann unten das Projekt aufklappen und die importierte WSDL auswählen.


Fertig, abschliessen mit 'OK'


Das Serviceinterface links wurde damit automatisch erzeugt. Jetzt wird der Mediator mit dem Web Service auf der rechten Seite verbunden.


Per Doppelklick wird der Mediator geöffnet. Hier müssen noch die Mapper für die beiden Richtungen definiert werden. Hierzu auf das 'Select an existing mapper file or create a new one' Icon klicken.


Weil noch kein Mapper-File existiert, muss zunächst ein neues erstellt werden. Hierzu 'Create New Mapper File' auswählen, ein Dateiname wird automatisch vergeben, und mit 'OK' bestätigen.


Das Mapping ist an dieser Stelle trivial: einfach die beiden arg0-Parameter miteinander verbinden. Anschliessen zur Sicherheit ein 'Save all' durchfürhren und das Mapper-Fenster wieder schliessen.

Jetzt bitte für 'Synchronous Reply' noch einmal genau so verfahren und die beiden 'reply'-Werte miteinander verbinden. Hinterher kann das Mediator-Fenster wieder geschlossen werden.


Jetzt muss noch die Basic Authentication über den Oracle Web Services Manager (OWSM) konfiguriert werden, die Details dazu gibt es z.B. im Blog von Edwin Biemond.


Im nächsten Dialog klickt man unter Security auf das grüne Plus (+) Symbol und wählt dort die 'oracle/wss_http_token_policy' aus. Danach mit 'OK' schliessen.


Jetzt muss die SOA-Suite, auf die das Composite deployed werden soll, noch entsprechend konfiguriert werden. Hierzu per Rechtsklick auf die WebLogic Domain das Popup-Menü öffnen und 'Security|Credentials' auswählen.


Sofern nicht bereits vorhanden, muss hier die Map 'oracle.wsm.security' erstellt werden. Hierzu auf '(+) Create Map' klicken und mit 'OK' bestätigen.


In der Map wird dann via '(+) Create Key' der Key basic.credentials vom Typ Password angelegt und die Zugangsdaten für den Service eingegeben.


Das Ergebnis sollte dann wie oben aussehen. Damit ist die Konfiguration abgeschlossen.

Zum Testen wird das Composite deployed (s. z.B. hier).


Zum testen dann im Enterprise Manager das Composite auswählen und auf Test klicken ...


... hier einen möglichst sinnvollen Testwert eintragen und auf 'Test Web Service' klicken ...


... und fertig. Wenn alles richtig gelaufen ist, sollte hier jetzt das Ergebnis zu sehen sein.

Somit kann also der Web Service durch den OSB per Basic Authentication abgesichert werden und aus der SOA-Suite per OWSM-Credential aufgerufen wird. Dabei kann z.B. in der Entwicklung die Basic Authentication abgeschaltet werden und erst beim Deployment auf das Testsystem aktiviert werden.

Donnerstag, 30. Januar 2014

Handson: Basic Authentication zwischen OSB und SOA-Suite (Teil 2)

Im zweiten Teil soll der via Basic Authentication geschützte ProxyService aus der SOA-Suite genutzt werden. Hierzu wird zunächst der Zugriff auf den Service getestet.


Die URL für Service bekommt man in der Übersicht zum Proxy Service unter Endpoint URI, davor kommen nur noch Hostname und Port des OSB Servers. Also in diesem Fall

oel6ab:8011/Basic-Auth/Proxy_Services/HelloService-PS


Zum Testen gibt man diese URL in einen Web Browser auf dem aufrufenden System ein, gefolgt von ?WSDL, also in diesem Beispiel

oel6ab:8011/Basic-Auth/Proxy_Services/HelloService-PS?WSDL

Da der Service per Basic Authentication abgesichert ist, erscheint die Eingabeaufforderung für Benutzername/Password. Hier kann z.B. der weblogic User genommen werden.


Wenn bis hier alles geklappt hat, wird die WSDL angezeigt. Diese bitte lokal speichern, dabei auf die Dateiendung achten.


Weiter geht es im JDeveloper. Hier wird zunächst eine neue Anwendung mit 'New Application' angelegt, als Typ SOA Application ausgewählt und weiter mit 'Next'.


Wahlweise kann das Projekt einen Namen bekommen, z.B. SoaProject1. Weiter mit 'Next'.


Defaults belassen, weiter mit 'Next'


'Empty Composite' auswählen und abschliessen mit 'Finish'


Als Ergebnis gibt es eine Application mit einem Projekt für das SOA Composite. Bevor dieses jetzt mit Leben gefüllt wird, wird noch ein weiteres Projekt zum Testen des Services benötigt. Dieses wird angelegt mit 'New Projekt...'.


Das 'Generic Project' reicht aus, abschließen mit 'OK'


Namen vergeben, Web Services als Technologie auswählen und gleich abschließen mit 'Finish'


Per Rechtsklick auf das Projekt und Auswahl von 'New...' wird die New-Gallery aufrufen.


Hier 'Java Web Service from WSDL' auswählen und weiter mit 'OK'


Es erscheint der 'Create Java Web Service from WSDL' Wizard, gleich weiter mit 'Next'.


Default belassen und weiter mit 'Next'.


Hier die URL der WSDL eingeben wie oben im Browser, dann weiter mit 'Next'


Hier noch einmal Benutzername und Password eingeben, weiter mit 'OK'


Dann noch einen Namen vergeben und abschliessen mit 'Finish'


Die WSDL wird schematisch angezeigt. Zum Testen des Web Service auf den grünen Pfeil klicken.


Der 'HTTP Analyzer' wird geöffnet, hier kann eine Payload eingegeben werden und mit 'Send Request' der Web Service damit aufgerufen werden.


Es gibt einen 'Error 401 -- Unauthorized' weil der Service eine Autorisierung erfordert.


Die Basic Authentication ist Bestandteil des HTTP-Protokolls, sie muss entsprechend im HTTP-Header berücksichtig werden. Hierzu wird per kleinem Plus [+] Symbol links der HTTP-Header aufgeklappt, mit dem großen grünen Plus rechts das Menü geöffnet und 'Authorization Basic' ausgewählt.


In der neuen Headerzeile nach Doppelklick Benutzername und Password eintragen, danach wieder via 'Send Request' den Aufruf neu starten.


Mit der richtigen Authentifizierung ist der Aufruf dann auch erfolgreich. Damit konnte in diesem Abschnitt der Proxy Service aus dem letzten Teil erfolgreich im JDeveloper mit Basic Authentication aufgerufen werden. Im nächsten Schritt wird der Proxy Service dann aus einem SOA Composite aufgerufen.

---> Weiter geht es in Teil 3

Freitag, 24. Januar 2014

Handson: Basic Authentication zwischen OSB und SOA-Suite (Teil 1)

Für dieses Szenario soll ein Web Service über den Oracle Service Bus (OSB) deklarativ per Basic Authentication abgesichert und anschliessend ebenso deklarativ aus der SOA-Suite genutzt werden. Benötigt werden für dieses Handson eine Weblogic Domain mit SOA-Suite, OSB und einem weiteren Server in dem ein einfacher Webservice läuft, z.B. der Hello-World Service aus dem OBTM Handson.


Zuerst wird die WSDL von dem benutzten WebService benötigt. Diese erhält man in der Weblogic Console unter Deployments -> den jeweiligen Service auswählen und dann per Rechtsklick auf den WSDL-Link die URL kopieren.


Dann am besten in der Service Bus Console ein eigenes Projekt (z.B. 'Basic-Auth') anlegen.


Im nächsten Schritt muss die WDSL importiert werden. Hierfür wird am besten im Projekt noch ein Folder 'Resources' angelegt.


In dem Ordner kann kann die WSDL importiert werden. Dazu bei 'Create Resource' die Option 'Resources from URL' auswählen.


Hier wird dann die URL der WSDL des Services eingegeben und ein Name dafür vergeben, weiter mit Next>>


Im nächsten Dialog einfach die Defaults belassen und mit 'Import' abschliessen.


Sofern man nicht im Developer-Modus ist, jetzt einfach mal abspeichern.


Da der Name für das XML-Schema recht generisch ist, kann man ihn im Resources-Folder auch umbenennen.


Z.B. auf XML_Schema_HelloService.

Jetzt benötigen wir einen Business-Service für den Web Service.


Hierfür kann man zunächst einen Ordner 'Business Services' im Projekt anlegen.


Dann in diesem Ordner den Business Service anlegen via 'Create Resource|Business Service'


WSDL Web Service auswählen und 'Browse'


Hier die eben importierte WSDL auswählen


Den Port auswählen und mit 'Submit' schliessen.


Die Daten werden übernommen. Noch einen Namen vergeben, dann weiter mit 'Last>>'


Noch eine Zusammenfassung, abschliessen mit 'Save'


Dann wird noch der Proxy Service zu dem Business Service benötigt. Hierfür kann man wieder einen Ordner 'Proxy Services' anlegen (wie oben). Dort wird der Business Service dann erstellt über 'Create Resource|Proxy Service'.


Hier wird dann ausgewählt 'Create From Existing Service' -> 'Business Service' und weiter geht es mit 'Browse'.


Hier kann dann der eben angelegte Business Service ausgewählt werden, weiter mit Submit.


Die Daten werden übernommen. Noch einen Namen angeben, dann weiter mit 'Next>>'


Auf der nächsten Seite die vorgeschlagenen Defaults belassen und weiter mit 'Next>>'


Auf dieser Seite jetzt die Basic Authentication einschalten. Die weiteren Optionen werden nicht benötigt, daher gleich weiter zum Ende mit 'Last>>'


Zusammenfassung und speichern mit 'Save'


Jetzt wird alles bis hier erst einmal getestet. Hierzu auf den kleinen Käfer rechts neben dem ProxyService klicken.


Hier kann man eine passende Payload eingeben und mit 'Execute' den Proxy Service aufrufen.


Wenn bis hier alles geklappt hat, zeigt das Response Document die erwartete Antwort an.

Bis hier wurde also ein bestehender Web Service über den Import seiner WSDL im OSB bekannt gemacht und über je einen Business - und Proxy Service zur Verfügung gestellt. Dabei wurde beim Proxy Service die Basic Authentication eingeschaltet, so dass dieser Service welcher von Haus aus keinerlei Authentifizierung benötigt nur mit einer solchen über den OSB angesprochen werden kann.

Im nächsten Teil wird gezeigt, wie dieser Service jetzt inclusive Authentifizierung aus der SOA-Suite genutzt werden kann.

---> Handson: Basic Authentication zwischen OSB und SOA-Suite (Teil 2)