Oracle Fusion Middleware Blog

Deutsche Informationen rund um Oracle Fusion Middleware

NodeJS Beispiel für Application Container Cloud Service

leave a comment »

In diesem Blog Post möchte ich ein Beispiel zeigen, wie man eine NodeJS Anwendung auf dem Application Container Cloud Service bereitstellt. Nehmen wir ein einfaches Beispiel für eine Message Board Anwendung, wie sie in der Samples Bibliothek von NetBeans zu finden ist.

Voraussetzungen

  • NetBeans Installation inklusive Google Chrome und NetBeans Plugin zum Debuggen
  • Lokale NodeJS Installation zum Testen
  • Zugang zu einer Oracle Application Container Cloud Instanz (ACCS)

Entwicklung der Demoanwendung

Die NodeJS Anwendung ist ein Message Board, auf dem man Texte posten kann. Diese Anwendung verwendet weitere JS Frameworks, wie Express (serverseitige Webanwendung auf Basis NodeJS), Jade (UI Template Framework), Knockout (Data Binding ins UI) sowie Bower (Paket Manager) und sieht im Browser in etwa so aus.

Im Folgenden wird die Anwendung erst einmal entwickelt.

  • Starte NetBeans und erstelle ein neues Projekt
  • Wähle Kategorie Samples – HTML5/JavaScript – Express/Jade Messages Sample
  • Gib der Anwendung einen Namen (z.B. MessagesExpress) und beende den Wizard
  • Die Anwendung referenziert NodeJS Module, die aber noch in die Anwendung geladen werden müssen. Daher weist NetBeans offene Probleme aus und kennzeichnet das Projekt rot. Löse die Projektfehler durch rechten Mausklick auf das Projekt und wähle Resolve Project Problems
  • Wähle die erste Meldung aus und klicke auf Resolve. Wiederholde den Vorgang für die verbleibende Meldung. Schließe nun das Fenster.
  • Die Anwendung ist nun fertig und kann lokal getestet werden. Klicke mit der rechten Maustaste auf den Projektnamen und dann auf Run
  • Nun sollte sich der Chrome Browser mit der Anwendung öffnen

Bereitstellung der Anwendung in der Cloud

Um die Anwendung in der Cloud bereitzustellen, muss ein Manifest erstellt werden, in dem der Aufruf des Node Kommandos zum Starten der App enthalten ist. Ansonsten weiß der Container nicht, wie er die App starten soll.

  • Klicke mit der rechten Maustaste auf Sources -> New -> JSON File
  • Benenne die Datei manifest.json und klicke auf Finish
  • Ersetze den Inhalt komplett durch

{
"runtime": { "majorVersion": "0.12"},
"command": " node bin/www",
"release": {},
"notes": ""
}

  • Hinweis: Den Startbefehl für die Anwendung („command“) kann man dem Projekt entnehmen. Klicke dazu mit der rechten Maustaste auf den Projektnamen und wähle Properties-> Run
  • Da das Manifest sich im Root Verzeichnis der Anwendung befindet (bzw. befinden muss), wird hier der Eintrag für Start File relativ zum Root Verzeichnis angegeben, also statt D:\MyMobileWork\NonJDevWork\NetBeansApp\MessagesExpress\bin\www
    nur bin\www
  • Jetzt muss man nur noch auf dem Dateisystem das gesamte Projekt Zippen. Beachte dabei, dass das Packen im Root Verzeichnis der App erfolgen muss, sonst kann ACCS das Manifest im Archiv nicht finden.
  • Melde Dich nun an der Oracle Cloud an und begib Dich auf die ACCS Service Console
  • Klicke auf Create Application und Wähle den Typ „Node“ aus
  • Füll das Formular aus und wähle die Option „Upload Application Archive“
  • Wähle das oben gezipte Anwendungsarchiv und klicke auf „Create“. Die Anwendung wird nun hochgeladen und entpackt
  • Nun erfolgt automatisch das Deployment auf der Cloud, das heißt warten, bis dieser Prozess abgeschlossen ist.
  • Nach erfolgreichem Deployment ist die URL der Anwendung oben zu sehen
  • Voilà, die Anwendung steht nun auf der Cloud bereit

<DM>

Written by fmtechteam

20/04/2016 at 16:12

Nachdem sich der Staub gelegt hat – Oracle Forms 12c

leave a comment »

Im Oktober 2015 ist das neue Release 12c von Oracle Forms und Reports erschienen (12.2.1). Es ist Zeit für eine Zusammenfassung der wichtigsten Neuerungen und Erfahrungen.
Die wesentlichen Neuerungen sind im Forms Services Deployment Guide beschrieben.

Für das Deployment auf dem Client (Desktop) gibt es jetzt 4 Optionen:

  • Java Applet im Browser (wie in den bisherigen Versionen)
  • JNLP eingebettet in HTML
  • Java WebStart
  • Standalone (Forms Standalone Launcher)

Dies ist deshalb wichtig, weil die meisten Browser künftig das Netscape API (NPAPI) zur Integration von Java und Flash über Plug-Ins nicht mehr unterstützen werden.

Die Installation von Oracle Forms und Reports 12c erfordert die Fusion Middleware Infrastruktur und damit eine Datenbank zur Speicherung von Schema-Informationen. Die notwendigen Schemata werden mit Hilfe des Repository Creation Utility (RCU) angelegt und speichern unter anderem Informationen zur Authentifizierung (Oracle Platform Security Services).
Hier bei ist zu beachten, dass die Lizenzen für die Internet Developer Suite, den Internet Application Server (Enterprise Edition) und die WebLogic Server Suite eine limitierte Lizenz für die Nutzung der Datenbank enthalten. Lediglich für die Lizenz „Forms and Reports“ ist eine zusätzliche Datenbank-Lizenz erforderlich. Kunden können dafür eine bereits lizensierte Datenbank nutzen oder müssen eine zusätzliche Lizenz erwerben.

Neben der offiziellen Dokumentation zur Installation gibt es zwei Installationsbeschreibungen für Forms und Reports 12c in deutscher Sprache:

Nicht vergessen sollte man die Tatsache, dass in den Release Notes von 12.2.1 Oracle Reports als „deprecated“ gekennzeichnet wurde. Anwender von Oracle Reports sollten sich daher rechtzeitig Gedanken machen, wie bestehende Oracle Reports-Anwendungen abgelöst werden können. Oracle Forms 12c bietet als Alternative die native Integration des Oracle BI Publisher an.

<JM>

Written by fmtechteam

23/03/2016 at 16:12

Installation des Oracle BI Publisher 12c

leave a comment »

Der Post beschreibt in kurzer Form die Installation des Oracle BI Publisher 12c (12.2.1) im Standalone-Modus, d.h. ohne weitere Komponenten der Oracle BI Suite. Dies ist dann sinnvoll, wenn der BI Publisher als Reporting-Lösung in Verbindung mit Anwendungen (z.B. Oracle Forms, Oracle ADF) eingesetzt werden soll. Die folgende Beschreibung setzt Kenntnisse des Oracle BI Publisher voraus. Neueinsteigern wird empfohlen, sich zunächst auf den BI Publisher zu informieren und danach die offizielle Dokumentation zu Rate zu ziehen.

Installationsprozess

Der Installationsprozess folgt dem allgemeingültigen Vorgehen bei der Installation von Komponenten der Oracle Fusion Middleware 12c.

  1. Benötigt wird auf dem Rechner ein aktuelles 64-bit JDK (Version 8).
  2. Im ersten Schritt wird die WebLogic Server Infrastructure 12.2.1 installiert. Die verwendete Java-Version muss auf das JDK 8 verweisen.
  3. Im nächsten Schritt werden die benötigten Software-Komponenten in ein Oracle Home installiert. Wenn man später die zahlreichen Beispiel-Reports nutzen will, sollte man bei der Auswahl der zu installierenden Komponenten die Option „BI Platform with Samples“ auswählen.
  4. Im dritten Schritt erfolgt die Konfiguration des BI Publishers, d.h. die WLS Domain wird einschließlich der Server und ihrer Konfiguration erzeugt. Entsprechen die Ergebnisse nicht den Wünschen, kann dieser Schritt wiederholt werden, indem die Domain komplett gelöscht und neu erzeugt wird.
    Während der Konfiguration müssen in einer Repository-Datenbank mehrere Schemata erzeugt werden. Dies kann man mit Hilfe des Repository Creation Utility (RCU) entweder vor dem Aufruf der Konfiguration oder innerhalb des Konfigurationsprozesses tun. Das Utility RCU kann aus dem Verzeichnis $ORACLE_HOME/oracle_common/bin aufgerufen werden.
    Will man später die Beispiel-Reports nutzen, muss während der Konfiguration die „Sample App Lite“ ausgewählt werden.

Ergebnisse der Installation

Im Ergebnis der Installation werden der Node Manager, der WLS Admin Server und Managed Server angelegt. Als Security-Modell ist „FMW Security“ voreingestellt. Eine erste Anmeldung ist mit den Daten des Administrators möglich.

Nacharbeiten und Besonderheiten der Version 12c

  1. Zunächst empfiehlt sich die Einrichtung eines Super Users im Security Tab des BI Publishers, der unabhängig von den verschiedenen Security-Modellen für die Anmeldung genutzt werden kann.
    Stellt man danach das Security-Modell auf „BI Publisher“ um, können nach einem Restart des Servers Benutzer direkt über das User Interface des BI Publisher eingerichtet werden.
  2. Es fällt auf, dass der Speicherort des BI Publisher Repositories nicht mehr über das User Interface geändert werden kann. Auch eine Trennung zwischen dem Reports- und dem Admin-Teil des Repositories ist so nicht mehr möglich.
    Will man dennoch das Repository an einem anderen Speicherort verwenden, so kann man dies in der Datei
    $DOMAIN_HOME/config/fmwconfig/bienv/core/bi-environment.xml
    durch die Änderung des Parameters <bi:singleton-data-directory> erreichen (siehe http://docs.oracle.com/middleware/1221/biee/BIESG/cluster.htm#BIESG9273).
    Wird diese Datei nicht gefunden, können folgende JVM-Parameter (z.B. in der setDomainEnv.sh) gesetzt werden:

    DXDO_FONT_DIR={path_to_font_directory}/fonts
    Dxdo.server.config.dir={path_to_bip_repository}
    Dxdo.server.resource.type=file
    Dxdo.obischema=false

    Ich habe eine relativ einfache Lösung durch die Verwendung von symbolischen Links gewählt und konnte damit auch Reports- und Admin-Teil des Repositories voneinander trennen.

<JM>

Written by fmtechteam

13/01/2016 at 21:02

JDeveloper 12c, ADF und die Datenbank-Abhängigkeiten

leave a comment »

Bei der Entwicklung und dem Deployment von ADF-Applikationen stößt man immer wieder auf das Thema, dass es zwingende Abhängigkeiten zur Datenbank gibt. Im JDeveloper 12.1.x und 12.2.x wird beim Start des eingebetteten WebLogic Servers zugleich eine Derby Database gestartet, die auf den Port 1527 horcht. Die Derby Database ist ein Teil der WebLogic Server-Installation. Im Blog Post Derby DB lässt sich nicht starten .. wird beschrieben, wie man das Problem lösen kann, das durch fehlende Rechte (Java Policy) beim Start entsteht. Allerdings ist es auch möglich, den Start gänzlich zu unterdrücken, indem man in der Datei setDomainEnv.sh des eingebetteten WebLogic Servers nach dem String „DERBY_FLAG“ sucht und die entsprechende if-Schleife komplett auskommentiert. Man findet diese Datei im Verzeichnis DefaultDomain/bin unter dem Systemverzeichnis des installierten JDevelopers.

Eine weitere Abhängigkeit zu einer Datenbank besteht beim Deployment von ADF-Applikationen in der Version 12c.  Die Abhängigkeit betrifft in diesem Fall die Fusion Middleware Infrastruktur, konkret die Oracle Platform Security Services (OPSS). Sie benötigen für den Betrieb im Cluster eine Datenbank, die beim Anlegen einer JRF (Java Require Files) Extended Domain zwingend erforderlich ist. Die Certification Matrix für das jeweilige Release der Fusion Middleware 12c gibt an, welche Datenbanken und welche Versionen dafür zum Einsatz kommen können.

Duncan Mills hat in seinem Blog Setting up a standalone WebLogic 12c install for ADF Without a Database  beschrieben, wie man diese Anforderung in einer Entwicklungs- oder Test-Umgebung umgehen kann.
Mit dem neuen Release 12.2.1 der Oracle Fusion Middleware ist es nun möglich, eine sogenannte Restricted JRF Domain anzulegen, die keine Abhängigkeit mehr zu einer Datenbank für OPSS aufweist.

<JM>

Written by fmtechteam

12/11/2015 at 13:33

Veröffentlicht in ADF, Appserver, Jürgen Menge

Tagged with ,

Dem Android Emulator unter Linux Beine machen

leave a comment »

Die Langsamkeit des Android Emulators beim Testen von Apps ist bekannt und kostet dem Entwickler Zeit und Nerven. Neben dem Projekt Genymotion, das eine virtuelle Maschine mit Android unter VirtualBox bereitstellt, gibt es Möglichkeiten, die Arbeit des Emulators unter MS Windows bzw. Linux zu beschleunigen.
Hier kurz eine Beschreibung der notwendigen Schritte, um unter Ubuntu eine signifikant schnellere Arbeitsweise des Emulators zu erreichen:

  • Dazu muss der Prozessor der Maschine Hardware Virtualization unterstützen und diese im BIOS aktiviert sein.
    Zur Überprüfung das folgende Kommando ausführen:
    egrep -c ‘(vmx|svm)’ /proc/cpuinfo
    Das Ergebnis muss eine Zahl sein, die größer als 0 ist.
  • Die folgenden Packages müssen installiert werden:
    qemu-kvm, libvirt-bin, ubuntu-vm-builder, bridge-utils
  • Der aktuelle Benutzer muss den Gruppen kvm und libvirtd hinzugefügt werden.
  • Im Android SDK die System Images für Intel x86 Atom installieren:

Android SDK

  • Eine virtuelle Maschine (AVD) auf Basis des Intel Atom System Image definieren und starten.

Intel Atom AVD

Es gibt eine wesentliche Einschränkung zu beachten:
Es können nicht zwei Anwendungen gleichzeitig laufen, die KVM nutzen. So können beispielsweise nicht VirtualBox und eine Android AVD auf Basis des Intel Atom System Image gleichzeitig laufen.

<JM>

Written by fmtechteam

21/09/2015 at 21:17

SAML SSO zwischen ADF Anwendungen und WebCenter Portal

leave a comment »

Hier werden die notwendigen Schritte zum Aufbau eines SAML basierten Single Sign Ons zwischen WebCenter Portal 11.1.1.8, auch als Spaces bekannt, und einer eigenen, beliebigen ADF Anwendung beschrieben. Mit anderen Worten, die abgesicherte ADF Anwendung kann seine Authentifizierung an WebCenter Portal weiter delegieren und dessen Benutzerkontext adaptieren.

Problembeschreibung

Wenn WebCenter beispielsweise um BPM Process Spaces erweitert wurde, ist in WeCcenter ein Aufgabenlisten TaskFlow verfügbar, der alle Aufgabe aus der BPM Suite anzeigt. Klickt man nun auf einen Eintrag in dieser Liste, so wird in einem Browser Pop-up Fenster die dazugehörige Task UI aufgerufen.

Picture1

Für dieses Szenario muss der Anmeldekontext von Webcenter an die ADF Anwendung übergeben werden, damit beispielsweise in der ADF Form ein Dokumentenupload als Prozessattachment in den Content Server vorgenommen werden kann. Dafür ist ein Web SSO zwischen Webcenter Portal und der ADF Anwendung nötig. Die empfohlene Vorgehensweise ist eine Einbeziehung beider Anwendungen in ein unternehmensweites SSO. Was macht man nun, wenn aber ein solches nicht vorhanden ist? Hier besteht die Möglichkeit, ein minimalistisches SSO auf der Basis von SAML aufzusetzen. Diese Lösung weist einige Einschränkungen auf (z.B. kein globales Single Sign Off), ist aber eine gültige Vorgehensweise und wird auch von WebCenter 11.1.1.8 weiterhin unterstützt. Der WebCenter Portal Admin Guide dokumentiert das Setup dazu im Kapitel 33 (siehe hier).

Lösung

Vorbemerkungen

Der hier beschriebene Lösungsweg berücksichtig SAML v1.1. aufgrund der durch WebCenter bereitgestellten Scripte. Nach jetzigem Stand wird SAML 2.0 mit WebCenter 12g unterstützt (unverbindlich). Wie bereits erwähnt, ist kein globales Single Sign Off in SAML v1.1. möglich. Das bedeutet, dass nach einer Abmeldung und Wiederanmeldung an WebCenter innerhalb der aktuellen Browsersession mit einem anderen Benutzernamen der vorherige Benutzerkontext für die ADF Anwendung beibehalten wird. Der Anwender muss also alle Browserfenster der Sitzung komplett beenden.

Es wird in der hier aufgezeigten Herangehensweise  keine SSL Verschlüsselung, wie im Normalfall bei Anmeldefenstern üblich, berücksichtigt, da nur der allgemeine Lösungsweg an einem einfachen Beispiel skizziert wird.

Als Voraussetzung muss natürlich WebCenter Portal korrekt installiert und konfiguriert sein. Der im Beispiel verwendete Weblogic Server für die eigene ADF Anwendung ist mit dem WebCenter Server in einer gemeinsamen Weblogic Domäne installiert. Eine BPM Suite Installation ist in diesem Fall nicht notwendig, da hier lediglich das Zusammenspiel zwischen der eigenen ADF Anwendung und WebCenter Portal im Fokus liegt. Die BPM Suite dient nur zur Veranschaulichung der Aufgabe.

Namenskonvention für das Beispiel

Hier sind die im Beispiel verwendeten Namen  und Pfade. Diese Werte müsssen natürlich für die eigene Umgebung angepasst werden.

  • Hostname = owc.vm.oracle.com
  • SAML Source Site = für die Anmeldung verantwortliche Anwendung = WebCenter Portal
  • SAML Destination Site = Zielanwendung, die die Authentifizierung von der Source Site übernehmen soll = eigene ADF Anwendung
  • SAMLAPP = Name der eigenen ADF Anwendung , Context root = /samlapp
  • Oracle Fusion Middleware Basisverzeichnis /oracle/fmw/
  • WLS Domäne
  • Name = dot8
  • Verzeichnis = /oracle/fmw/user_projects/domains/dot8
  • Weblogic Servernamen
  • WC_Spaces auf Port 8888 für WebCenter Portal
  • CustomApp auf Port 8100 für eigene ADF App (SAMLAPP)
  • Oracle HTTP Server wurde hier verwendet, ist aber nicht zwingend notwendig. WebCenter hört daher in diesem Falle auf Port 80
  • JDK installiert in /usr/java/jdk1.7.0_55
  • Domain Admin Account lautet weblogic/welcome1 (wird für wlst Anmeldung verwendet)

Aufsetzen des Managed Servers für ADF Anwendung

  1. Erstelle einen neuen WLS Server „CustomApp“ in der Domäne für Port 8100 über WLS Console
  2. Füge ADF Runtime über die EM Website hinzu
    • Wähle den neuen Managed Server in EM Website aus
    • Schalter “Apply JRF Template” wird sichtbar. Durch Anklicken werden alle notwendigen Bibliotheken dem Server zugewiesen

SAML 1.1 Konfiguration der Server

Zunächst sollte ein neuer Schlüssel im Standard Keystore DemoIdentity erstellt und anschließend in eine Zertifikatsdatei exportiert werden. Diese Zertifikatsdatei wird später in der Konfigurationsdatei wcsamlsso.properties referenziert

  1. Identifiziere in der WLS Konsole den Speicherort des Standard Keystores.
    Picture2
  2. Öffne eine SSH Shell und navigiere zu diesem Verzeichnis
    cd /oracle/fmw/wlserver_10.3/server/lib/
  3. Füge einen neuen Schlüssel zum DemoIdentity Keystore hinzu
    /usr/java/jdk1.7.0_55/bin/keytool -genkey -keypass testkeypass 
    -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase 
    -keyalg rsa -alias testalias
  4. Exportiere den Schlüssel in eine Datei
    /usr/java/jdk1.7.0_55/bin/keytool -export -keypass testkeypass 
    -keystore DemoIdentity.jks -storepass DemoIdentityKeyStorePassPhrase 
    -alias testalias -file testalias.der
  5. Erstelle Credential Dateien zum automatisierten Domänenlogin in wlst
    cd /oracle/fmw/user_projects/domains/dot8/config/fmwconfig
    /oracle/fmw/Oraclew_WC1/common/bin/wlst.sh
    connect('weblogic','welcome1','localhost:7001')
    storeUserConfig('spacesconfig.secure', 'spaceskey.secure')
  6. Erstelle eine Verschlüsselung für das Schlüsselpasswort
    print encrypt(obj='testkeypass', domainDir='/oracle/fmw/user_projects/domains/dot8/')
    exit()
  7. Prüfe, ob in dem Verzeichnis die Dateien ordentlich angelegt wurden
  8. Navigiere zum WebCenter Home Verzeichnis und dort ins common/bin
    cd /oracle/fmw/Oracle_WC1/common/bin/
  9. Editiere die Datei wcsamlsso.properties. Die Sektion [spaces_config] sollte in etwa so aussehen
    [spaces_config]
     configFile = /oracle/fmw/user_projects/domains/dot8/spacesconfig.secure
     keyFile = /oracle/fmw/user_projects/domains/dot8/spaceskey.secure
     adminURL = localhost:7001
     usesSSL = false
     url = http://owc.vm.oracle.com/webcenter
     serverName = WC_Spaces
     certAlias = testalias
     certPassword = {AES}0ZvXfi7zJs89AkLXg5/tQzVIAKaV0ZeGIo+oNeM64VE=)
     certPath = /oracle/fmw/wlserver_10.3/server/lib/testalias.der

    Das Certpassword entsprich dem unter Punkt 6 erstellten Schlüssel

  10. Füge folgende Zeilen am Ende der Datei hinzu
    [custom_config]
     configFile = /oracle/fmw/user_projects/domains/dot8/spacesconfig.secure
     keyFile = /oracle/fmw/user_projects/domains/dot8/spaceskey.secure
     adminURL = localhost:7001
     usesSSL = false
     serverName = CustomApp
     certAlias = testalias
     certPath = /oracle/fmw/wlserver_10.3/server/lib/testalias.der
    [samlapp_config]
     url = http://owc.vm.oracle.com:8100/samlapp

    Beachte die Leerzeile nach jeder Sektion sowie am Ende der Datei. Ansonsten wird die Sektion nicht erkannt. Die komplette Beispieldatei liegt hier

  11. Navigiere zum Verzeichnis der SAML SSO Python Scripte, die durch die WebCenter Installation bereitgestellt werden
    cd /oracle/fmw/Oracle_WC1/webcenter/scripts/samlsso/
  12. Erstelle ein neues Script für die Sektion [custom_config]
    vi configureCustomApp.py
  13. Füge den Code aus dem Anhang hinzu und speichere die Datei ab
  14. Erstelle analog dazu eine neue Python Scriptdatei für die Sektion [samlapp_config]
    vi configureSAMLApp.py
  15. Füge den Code aus dem Anhang hinzu und speichere die Datei ab
  16. Navigiere zurück zu common/bin im WebCenter Home Verzeichnis
    cd /oracle/fmw/Oracle_WC1/common/bin/
  17. Starte wlst
    ./wlst.sh
  18. Prüfe, ob die Domain gestartet ist (AdminServer, WC_Spaces) und führe dann folgenden Befehl in der wlst Konsole im Offline Modus aus.
    execfile('/oracle/fmw/Oracle_WC1/webcenter/scripts/samlsso/configureSpaces.py')
  19. Prüfe Fehler und starte dann die Domäne durch (AdminServer, WC_Spaces, CustomApp)
  20. Nun werden relying party und asserting party angelegt. Starte dazu wlst nochmal
    ./wlst.sh
  21. Führe folgenden Befehl in der wlst Konsole im Offline Modus aus
    execfile('/oracle/fmw/Oracle_WC1/webcenter/scripts/samlsso/configureCustomApp.py')
  22. Starte wlst nochmal
    ./wlst.sh
  23. Führe folgenden Befehl in der wlst Konsole im Offline Modus aus
    execfile('/oracle/fmw/Oracle_WC1/webcenter/scripts/samlsso/configureSAMLApp.py')

Das wär’s für die SAML Konfiguration auf Serverseite. Aus Sicherheitsgründen sollten alle Dateien mit Anmeldeinformationen bereinigt werden, d.h. wcsamlsso.properties, und die Credential Dateien im Domänen Konfigurationsverzeichnis wieder gelöscht werden (spacesconfig.secure, spaceskey.secure)

Erstellen der ADF Anwendung

Für die SAML SSO Authentifizierung der ADF Anwendung sind zwei Hauptkriterien zuständig

  • Einschalten der ADF Security mit CLIENT-CERT Authentifizierung
  • Definition eines eindeutigen Cookie Pfades für die Anwendung. Dieser darf nicht mit anderen Cookie Pfaden kollidieren.

Erstellen wir nun eine einfache Beispielanwendung, die lediglich den Benutzernamen ausgeben soll.

  1. Starte JDev 11.1.1.7 und erstelle eine leere generische Anwendung
  2. Wähle ADF Faces als Projekt Technologiescope aus und beende den Assistenten
  3. Rechter Mausklick auf das Projekt und wähle „Project Properties
  4. Setze den JEE Anwendungskontext auf „SAMLAPP
    clip_image044
  5. Rechter Mausklick auf das Projekt und erstelle eine neue JSF Page (WebTier ->JSF). Nenne diese “start.jspx”.
  6. Rechter Mausklick auf “start. Jspx” und wähle “Go To Page Definition”. Klicke auf “YES” und die Page Definition Datei (“startPageDef.xml”) wird erstellt. Schließe die Datei.
  7. Platziere eine panelHeader Komponente auf die JSF Page sowie eine outputText Komponente
  8. Binde den outputText Value auf “Hello User : #{securityContext.userName}“. Die Seite sollte nun in etwa so aussehen.
    clip_image046
  9. Im JDev Hauptmenu rechter Mausklick auf Application -> Secure -> Configure ADF Security
    clip_image048
  10. Wähle “ADF Authentication and Authorization” -> klicke “Next” -> wähle “HTTPS Client Authentication” -> klicke “Next” -> Akzeptiere die Vorgabewerte “No Automatic grants” -> klicke “Next” -> markiere “Redirect Upon Successful Authentication” und wähle “start.jspx” als Welcome Page -> klicke “Next” -> “Finish
  11. Öffne im Application Resource Fenster die Datei “jazn-data.xml
  12. Klicke auf “Resource Grants” und wähle ”Web Page” als “Resource Type
  13. start.jspx” sollte schon ausgewählt sein. Füge eine “Application Role” hinzu.
    clip_image050
  14. Markiere “Authenticated Role” und klicke “OK
  15. Akzeptiere die “View” Rechte und speichere alles.
  16. Öffne im Projects Fenster die Datei “web.xml”, klicke auf “Source” Ansicht und scrolle nach unten ans Ende der XML Datei
    clip_image052
  17. Dort gibt es ein login-config Attribut. Ändere den Code zu
       CLIENT-CERT,BASIC
       jazn.com
    
  18. Speicher alles
  19. Öffne im Projects Fenster die Datei “weblogic.xml”
  20. Füge folgende Zeilen the oberhalb der letzen Zeile hinzu
       /samlapp
    
    
  21. Denke daran, dass der Cookie Pfad für diese Anwendung einzig sein muss. Nutz nicht /webcenter , da dies schon durch die WebCenter portal Anwendung in Gebrauch ist. Empfehlenswert ist die Angabe des URL Context Pfades, also /samlapp beispielsweise.
  22. Speicher alles.
  23. Erstelle ein WAR Deployment Profil für das Projekt
    (rechter Mausklick auf Project -> “Project Properties” -> “Deployment” -> “New” -> Wähle “WAR File” -> gib einen Namen an -> klicke “OK” 3 mal
  24. Erstelle ein Application Deployment Profil
    (JDev Hauptmenu -> “Application” -> “Application Properties” -> “Deployment” ->”New” -> Wähle “EAR” -> gib einen Namen an (z.B. SAMLAPP) -> klicke auf “OK” -> wähle “Application Assembly” -> markiere das WAR Deployment Profil -> klicke auf “OK” zwei mal
  25. Speicher alles.
  26. Deploye die Anwendung auf den “CustomApp” Server, der zuvor erstellt und konfiguriert wurde.
    (Jdev Hauptmenu -> “Application” -> “Deploy” -> “SAMLAPP” -> “Deploy to Application Server” -> klicke “Next” -> Wähle die Appserver Connection bzw. Erstelle eine neue für die WebCenter Domain -> wähle “Deploy to selected instance” -> wähle “CustomApp” als Zielserver -> klicke “Next” -> klicke “Finish

Das war‘s. Nun kann man die Anwendungs URL (http://owc.vm.oracle.com:8100/samlapp/faces/start.jspx ) in einem Webbrowser aufrufen und man müsste zur WebCenter Anmeldeseite weitergeleitet werden. Nach erfolgreichem Login erfolgt die Weiterleitung zurück zur Startseite der SAMLAPP und der aktuelle Benutzername sollte erscheinen.

<DM>

Anhang

Bitte alle Dateien ohne Endung xls abspeichern

configureCustomApp.py

configureSAMLApp.py

wcsamlsso.properties

Written by fmtechteam

30/04/2015 at 10:26

Veröffentlicht in ADF, Detlef Müller, WebCenter

Generierung von REST Clients mit verschiedenen IDEs (JDeveloper, Eclipse, NetBeans)

leave a comment »

In der Welt mobiler Anwendungen erfolgt der Zugriff auf Daten und Funktionen im Backend zumeist über RESTful Services, die die Nachrichten im kompakten JSON-Format austauschen. Im Gegensatz zu SOAP-Services, bei denen sich die WSDL-Beschreibung als Standard durchgesetzt hat, gibt es für RESTful Services mit JSON noch keinen etablierten Standard. Erste Ansätze existieren mit WADL (Web Application Description Language) und RAML (RESTful API Modeling Language).
Wie können nun die verschiedenen IDEs im Oracle-Umfeld mit existierenden REST/JSON-Services umgehen und aus den zur Verfügung stehenden Informationen einen REST-Client generieren, der beispielsweise anschließend in einer mobilen Anwendung verwendet werden kann, um mit dem REST Service zu kommunizieren. Für die Entwicklung der mobilen Anwendungen soll das Oracle Mobile Application Framework (MAF) eingesetzt werden.

Oracle JDeveloper 12.1.3

Sofern der REST Service die Nachrichten im XML-Format austauscht und dafür ein XSD Schema existiert, kann der Web Service Data Control Wizard im JDeveloper verwendet werden, um ein Data Control für den Web Service zu generieren. Sollen die Daten dagegen im JSON-Format ausgetauscht werden, muss der Client unter Verwendung des REST Service Adapters manuell in Java programmiert werden. Anschließend kann aus dem Service Object ein POJO Data Control generiert werden. Dieses Vorgehen ist ausführlich in einem Tutorial auf OTN beschrieben.

Oracle Enterprise Pack for Eclipse 12.1.3.4 (OEPE)

Alternativ zum Oracle JDeveloper kann auch OEPE eingesetzt werden, um mobile Applikationen auf Basis des Oracle Mobile Application Frameworks (MAF) zu entwickeln. In OEPE gibt es einen REST Service Editor, der auch für REST-JSON Services die notwendigen Artefakte automatisch generiert, ohne dass es eine Beschreibung des RESTful Services gibt.
Dazu praktiziert der Wizard einen interessanten Ansatz:

  • Im ersten Schritt (Tab REST Client) wird zunächst der Service „erforscht“, indem der Service wiederholt unter Angabe der URL, von Header-Informationen und Query Parametern aufgerufen wird und die Ergebnisse angeschaut werden. In dieser Phase werden keine Ergebnisse gespeichert.
  • Hat man die Struktur verstanden, kann mit Hilfe der Funktion „Import the REST Client Information“ eine erste Beschreibung des Service im XMI-Format (XML Model Interchange) erstellt werden. Diese wird im Tab REST API sicht- und editierbar. Alle Änderungen werden unmittelbar in der XMI-Beschreibung persistiert.
  • Im letzten Schritt „Artifact Generation“ wird aus der XMI-Beschreibung des Service ein Java Client generiert.
    Aus dem Service Object kann anschließend wie im JDeveloper ein POJO Data Control erzeugt werden.
OEPE REST Service Editor

OEPE REST Service Editor

Dieses Vorgehen ist in zwei Blog Posts ausführlich beschrieben:
https://blogs.oracle.com/oepe/entry/introduction_to_rest_service_editor
https://blogs.oracle.com/oepe/entry/introduction_to_the_rest_service

NetBeans 8.0.2

Im Unterschied zu den zwei vorhergehenden IDEs können mit NetBeans keine mobilen Applikationen auf Basis von Oracle MAF erstellt werden. Trotzdem war es interessant, die Möglichkeiten von NetBeans zu erkunden.
Wurden die REST Services mit NetBeans z.B. als annotierte Java-Klassen erstellt, kann ein REST Service Client dafür generiert werden. NetBeans bietet nach der Installation eine Reihe populärer Services (von Amazon, Delicious, Flickr, Google, ..) an, die jeweils durch eine WADL-Datei beschrieben sind.

NetBeans - Services

NetBeans – Services

Hier können eigene Services (SOAP oder REST) hinzugefügt werden, zu denen eine WSDL- oder WADL-Datei angegeben werden muss. Ist eine WADL-Datei für den Service hinterlegt kann anschließend mit Hilfe des RESTful Java Client Wizard der client-seitige Code generiert werden.
Das Vorgehen ist in diesem Tutorial und in diesem Video beschrieben.
Fehlt eine WADL-Beschreibung des Service müsste man diese vorab erstellen. Dieses Wiki beschreibt einige mögliche Ansätze und Werkzeuge zur Generierung einer WADL-Datei.

<JM>

Written by fmtechteam

13/04/2015 at 15:00

Folgen

Erhalte jeden neuen Beitrag in deinen Posteingang.