Allgemeines
Die Kommunikation ist sitzungsbezogen, d. h. es ist ein Login notwendig, der eine Sitzungs-ID erzeugt. Diese Sitzungs-ID muss bei allen folgenden Requests mitgesendet werden. Innerhalb einer Anmeldung können beliebig viele oxaion-Calls durchgeführt werden.
Nach Beendigung der Kommunikation muss die Sitzungs-ID wieder abgemeldet werden.
Die HTTP-Schnittstelle besitzt einen konfigurierbaren Sitzungs-Timeout. Ist eine Sitzung längere Zeit inaktiv, wird die Sitzung automatisch abgemeldet. Standardmäßig liegt der Timeout bei 15 Minuten
Die Schnittstelle ist über das Standard-HTTP-Protokoll aufrufbar. Die Parameter werden als HTTP-Parameter übergeben. Die Rückgabe erfolgt in XML- oder JSON-Form im HTTP-Body.
Als Zeichensatz wird UTF-8 verwendet.
Auf Wunsch kann die Schnittstelle auch per HTTPS betrieben werden (SSL-Verschlüsselung).
Installation
Die oxaion HTTP-Schnittstelle kann auf allen Systemen installiert werden, die den Hard- und Softwareanforderungen eines oxaion JET Servers entsprechen.
Aktuelle Vorgehensweise
Die Installation erfolgt als weiterer Dienst durch das Installations-Skript:
Aufruf "./install-oxaion.sh installAdditionalServer" , empfohlener Servername SRV-HTTP01, abweichender Server-Port 11290 führt zum Jetty-Port 11298 - dies ist der Port über den die API von externen Diensten angesprochen wird. Weitere Details siehe Installieren weiterer Server (ILM/ERW/HTTP).
Da dies ein eigenständiger Appserver ist, müssen dafür Jobs eingerichtet werden, aber nicht mehr der hosts-Eintrag angepasst werden, Anpassungsmöglichkeiten unten.
Klassische Herangehensweise
Alternativ erfolgt die Installation klassisch durch Entpacken der http_server.zip-Datei unterhalb des PRODUCTION-Ordners.
Für die erfolgreiche Verwendung der HTTP-Schnittstelle, muss in der server.xml der HTTP-Schnittstelle ("SRV-HTTP\temp\conf\server.xml") der hosts-Eintrag angepasst werden.
<hosts> <host address="localhost" encoding="UTF-8" name="OXAION" port="11200" timeout="0" type="RMI"/> </hosts>
Der hier einzutragende Port entspricht dem RMI-Port der server.xml des SRV01 (SRV01\temp\conf\server.xml).
Wichtig: Port, Type und Name sind zu prüfen.
Dabei sollte der Port der Angabe des Portservers (com.oxaion.jet.server.rmi.RMIRegistry unter dem App-Server) entsprechen.
Bei Windows-Betriebssystemen kann ein automatisch startender Windows-Dienst eingerichtet werden. Dazu ist die bat-Datei "installService.bat" unter "bin\service\bat\" auszuführen.
Anpassungen
Für beide Varianten gilt: Optional kann der Port geändert werden, falls die Schnittstelle nicht auf Port 11290/11298 gestartet werden soll.
Konfiguration der SSL-Verschlüsselung
Eigentlich wird empfohlen, diesen Sicherheitslayer außerhalb der oxaion-Services über WAF oder Reverseproxy abzuwickeln, aber SSL wird auch nativ unterstützt.
Über die Option <option name="ssl" value="true|false" /> in der server.xml kann die SSL-Verschlüsselung aktiviert/deaktiviert werden.
<listen active="true" class="com.oxaion.jet.server.jetty.HTTPServer" name="HTTP-Jetty" port="11298" required="false"> <option name="ssl" value="false" /> <option name="password" value="oxaion" /> oder <option name="encryptedPassword" value="GJKL7890H1" /> <option name="keystore" value="./../../data/certs/ssl-http-tunnel.keystore" /> </listen>
Um statt dem "password" ein "encryptedPassword" für den SSL-Keystore anzugeben, kann das Passwort wie folgt verschlüsselt werden: Passwörter verschlüsseln
Workaround Encrypted
Bei der Nutzung der Option encryptedPassword muss trotzdem password verwendet werden, der value ist dagegen egal, kann also als value="" gesetzt sein.
Vereinfachung
Ein vorhandener PFX-Keystore ist auch direkt ohne Konvertierung einbindbar.
Selbst signiertes Zertifikat
Die SSL-Verschlüsselung erfordert einen Java-Keystore. Bei Windows-Betriebssystemen kann dieser mit folgenden beiden Befehlen erzeugt werden kann:
keytool -genkey –keyalg RSA -keystore ssl-http-tunnel.keystore -alias ihreFirma keytool -selfcert -alias ihreFirma -keystore ssl-http-tunnel.keystore
Anschließend muss die Datei ssl-http-tunnel.keystore in das PRODUCTION\data\certs-Verzeichnis oder certs-Verzeichnis der HTTP-Schnittstelle (dann aber keystore-Pfad anpassen!) kopiert werden.
Öffentlich gültiges Zertifikat
Anstatt eines selbst signierten Zertifikats, kann auch ein Zertifikat von einer öffentlichen Zertifizierungsstelle importiert werden.
keytool -genkey –keyalg RSA -keystore oxaionssl.jks -alias ihreFirma keytool -importkeystore -srckeystore _.oxaion.de_private_key.pfx -srcstoretype pkcs12 -destkeystore oxaionssl.jks -deststoretype JKS
Wichtig: Das Passwort für den neuen Keystore muss dem Passwort für das Zertifikat entsprechen (das Passwort für den PFX-Keystore).
SSL-Debugging
Manchmal kann es nützlich sein, die SSL-Verschlüsselung temporär zu debuggen. (Wenn z.B. ein neues Zertifikat nicht wie gewünscht funktioniert.)
Hierfür können folgende Parameter in der wrapper.conf des Service verwendet werden.
wrapper.console.visible=true wrapper.java.additional.# = -Dorg.eclipse.jetty.LEVEL=DEBUG wrapper.java.additional.# = -Djavax.net.debug=ssl,handshake,data
Zentralisierung
Bei v2021 ist es Gepflogenheit die Zertifikate nicht pro Dienst, sondern zentral je Umgebung, also unter PRODUCTION\data\certs abzulegen.