UTM als HTTP-Server
Eine UTM-Anwendung kann auch als HTTP-Server fungieren.
Als Methoden werden GET, PUT, POST und DELETE unterstützt. Neben HTTP wird auch der Zugang über HTTPS unterstützt.
Dazu wurden folgende Schnittstellen geändert:
Generierung
Alle Systeme:
KDCDEF-Anweisung BCAMAPPL:
Beim Operand T-PROT= mit Wert SOCKET gibt es eine zusätzliche Angabe zum Transportprotokoll:
*USP: Auf Verbindungen dieses Zugriffspunktes soll das UTM-Socket-Protokoll verwendet werden. *HTTP: Auf Verbindungen dieses Zugriffspunktes soll das HTTP-Protokoll verwendet werden. *ANY: Auf Verbindungen dieses Zugriffspunktes werden sowohl das UTM-Socket-Protokoll als auch das HTTP-Protokoll unterstützt. Beim Operand T-PROT= mit Wert SOCKET gibt es zusätzlich die Angabe zur Verschlüsselung:
SECURE: Auf Verbindungen dieses Zugriffspunktes erfolgt die Kommunikation unter Verwendung von Transport Layer Security (TLS). Neuer Operand USER-AUTH = *NONE | *BASIC. Hiermit kann angegeben werden, welchen Authentisierungsmechanismus HTTP-Clients für diesen Zugangspunkt verwenden müssen.
KDCDEF-Anweisung HTTP-DESCRIPTOR:
Mit dieser Anweisung wird eine Abbildung des in einem HTTP-Request empfangenen Path auf einen TAC definiert und es können zusätzliche Verarbeitungsparameter angegeben werden.
BS2000-Systeme:
-
- KDCDEF-Anweisung CHAR-SET:
Mit dieser Anweisung können jeder der von openUTM zur Verfügung gestellten vier Code-Konvertierungen von UTM jeweils bis zu vier Character-Set Namen zugeordnet werden.
- KDCDEF-Anweisung CHAR-SET:
Programmierung
KDCS- Kommunikationsbereich (KB):
Im Kopf des KDCS-Kommunikationsbereichs gibt es im Feld kccp/KCCP neue Werte für die Client-Protokolle HTTP, USP-SECURE und HTTPS.KDCS-Aufruf INIT PU:
Die Version der Schnittstelle wurde auf 7 erhöht.
Um die verfügbare Information vollständig zu erhalten, muss im Feld KCLI der Wert 372 angegeben werden.
Neue Felder zur Anforderung (KCHTTP/http_info) und Rückgabe (KCHTTPINF/httpInfo) von HTTP-spezifischen Informationen.
Administrationsschnittstelle KDCADMI
Die Datenstrukturversion von KDCADMI wurde auf Version 11 geändert (Feld version_data im Parameterbereich).
Neue Struktur kc_http_descriptor_str im Identifikationsbereich für die Unterstützung des HTTP Deskriptors.
Neue Struktur kc_character_set_str im Identifikationsbereich für die Unterstützung des HTTP Charactersets.
Neue Felder secure_soc und user_auth in Struktur kc_bcamappl_str für die Unterstützung von HTTP Zugangspunkten.
Programmschnittstelle UTM-HTTP
Zusätzlich zum KDCS-Interface bietet UTM ein Interface zum Lesen und Schreiben von HTTP Protokollinformationen und zur Behandlung des HTTP Message Bodys.
Im Folgenden werden die Funktionen des Interface kurz aufgelistet:-
Funktion kcHttpGetHeaderByIndex()
Diese Funktion liefert den Namen und Wert des HTTP-Header-Feldes für den angegebenen Index zurück.Funktion kcHttpGetHeaderByName()
Die Funktion liefert den Wert des über den Namen spezifizierten HTTP-Header-Feldes zurück.Funktion kcHttpGetHeaderCount()
Diese Funktion liefert die Anzahl der in dem HTTP-Request enthaltenen Header-Felder zurück, die vom Teilprogramm gelesen werden können .Funktion kcHttpGetMethod()
Diese Funktion liefert die HTTP-Methode des HTTP-Requests zurück.Funktion kcHttpGetMputMsg()
Diese Funktion liefert die vom Teilprogramm erzeugte MPUT-Nachricht zurück.Funktion kcHttpGetPath()
Diese Funktion liefert den mit KC_HTTP_NORM_UNRESERVED normierten HTTP- Path des HTTP- Requests zurück.Funktion kcHttpGetQuery()
Diese Funktion liefert die mit KC_HTTP_NORM_UNRESERVED normierte HTTP- Query des HTTP -Requests zurück.Funktion kcHttpGetRc2String()
Hilfsfunktion um ein Funktionsergebnis vom Typ enum in einen abdruckbaren null-terminierten String umzuwandeln.Funktion kcHttpGetReqMsgBody()
Diese Funktion liefert den Message Body des HTTP Requests zurück.Funktion kcHttpGetScheme()
Diese Funktion liefert das Schema des HTTP- Requests zurück.Funktion kcHttpGetVersion()
Diese Funktion liefert die Version des HTTP- Requests zurück .Funktion kcHttpPercentDecode()
Funktion zur Umwandlung von Zeichen in Prozent-Darstellung in Zeichenfolgen in normale Ein-Zeichen-Darstellung.Funktion kcHttpPutHeader()
Diese Funktion übergibt einen HTTP-Header für die HTTP-Response .Funktion kcHttpPutMgetMsg()
Diese Funktion übergibt eine Nachricht für das Teilprogramm, die mit MGET gelesen werden kann.Funktion kcHttpPutRspMsgBody()
Diese Funktion übergibt eine Nachricht für den Message Body der HTTP-Response.Function kcHttpPutStatus()
Diese Funktion übergibt einen HTTP-Statuscode für die HTTP-Response.
- Kommunikation über den Secure Socket Layer (SSL)
BS2000-Systeme:
-
Ist für eine UTM-Anwendung ein BCAMAPPL mit T-PROT=(SOCKET,...,SECURE) generiert, dann wird beim Anwendungsstart von UTM eine zusätzliche Task mit einem Reverse Proxy gestartet, der für die Anwendung als TLS Termination Proxy fungiert und über den sämtliche SSL-Kommunikation abgewickelt wird.
Unix-, Linux- und Windows-Systeme :
Für einen sicheren Zugang über TLS steht ein weiterer Netzprozess vom Typ utmnetssl zur Verfügung.
Sind für eine UTM-Anwendung BCAMAPPL mit T-PROT=(SOCKET,...,SECURE) generiert, dann wird beim Anwendungsstart von UTM eine Anzahl von utmnetssl Prozessen gestartet. Die Anzahl dieser Prozesse ist abhängig vom Wert LISTENER-ID dieser BCAMAPPL Objekte. In einem utmnetssl Prozess wird für die zugeordneten BCAMAPPL Portnummern die gesamte TLS-Kommunikation abgewickelt.
Verschlüsselung
Die Verschlüsselungsfunktionalität in UTM zwischen einer UTM-Anwendung und einem UPIC-Client wurde überarbeitet. Dabei wurden Sicherheitslücken geschlossen, moderne Methoden aufgenommen und die Auslieferung wie folgt vereinfacht:
UTM-CRYPT Variante
Bisher stand die Verschlüsselungsfunktionalität in UTM nur zur Verfügung, wenn man das Produkt UTM-CRYPT installiert hatte. Mit UTM V7.0 ist dies nicht mehr erforderlich. Ab dieser Version wird über die Generierung bzw. zum Anwendungsstart entschieden, ob die Verschlüsselungsfunktionalität zum Einsatz kommt oder nicht.Security
Bei der Kommunikation zwischen einer UTM-Anwendung und einem UPIC-Client wurde eine Sicherheitslücke behoben.Das hat zur Folge, dass verschlüsselte Kommunikation einer UTM-Anwendung V7.0 nur zusammen mit UPIC-Client Anwendungen ab UPIC V7.0 möglich ist!
-
Verschlüsselung Level 5 (
Unix-, Linux- und Windows-Systeme):
KDCDEF-Anweisungen PTERM, TAC und TPOOL
Beim Operanden ENCRYPTION-LEVEL gibt es einen zusätzlichen Level 5. Dabei wird zur Vereinbarung des Session-Keys das auf Elliptic Curves basierende Diffie-Hellman Verfahren verwendet und Ein-/Ausgabe-Nachrichten werden mit dem AES-GCM Algorithmus verschlüsselt.
OSI-TP Kommunikation und Portnummern
BS2000-Systeme:
- KDCDEF-Anweisung OSI-CON
Der Operand LISTENER-PORT kann auch auf BS2000-Systemen angegeben werden. Administrationsschnittstelle KDCADMI
In der Struktur kc_osi_con_str wird auch auf BS2000-Systemen im Feld listener-port die Portnummer angezeigt.
Subnetze
In einer UTM-Anwendung können auch auf BS2000-Systemen Subnetze generiert werden, um den Zugang zu UTM-Anwendungen auf definierte IP-Adressbereiche beschränken zu können. Zusätzlich kann die Namensauflösung per DNS gesteuert werden.
Dazu wurden folgende Schnittstellen geändert:
Generierung
BS2000-Systeme:KDCDEF-Anweisung SUBNET:
Die SUBNET-Anweisung kann auch auf BS2000-Systemen angegeben werden.
Alle Systeme:
KDCDEF-Anweisung SUBNET:
Mit RESOLVE-NAMES=YES/NO kann angegeben werden, ob nach einem Verbindungsaufbau eine Namensauflösung per DNS stattfinden soll oder nicht.Falls eine Namensauflösung erfolgt, dann wird über die Administrationsschnittstelle und in Meldungen der echte Prozessorname des Kommunikationspartners angezeigt. Andernfalls wird als Prozessorname die IP-Adresse der Komunikationspartners sowie der Name des in der Generierung definierten Subnetzes angezeigt.
Administrationsschnittstelle KDCADMI
Die Strukturen kc_subnet_str und kc_tpool_str enthalten ein neues Feld resolve_names.
Zugangsdaten für den XA-Datenbank-Anschluss
Ein modifizierter aber noch nicht aktivierter Benutzername für den XA-Datenbank-Anschluss kann per Administration (KDCADMI) gelesen werden:
-
Operationscode KC_GET_OBJECT:
Datenstruktur kc_db_info_str: Neues Feld db_new_userid.
Reconnect für den XA-Datenbank-Anschluss
Wird bei einer XA Aktion zur Steuerung der Transaktion entdeckt, dass die Verbindung zur Datenbank nicht mehr besteht, wird versucht die Verbindung zu erneuern und die XA Aktion zu wiederholen.
Nur falls dies nicht erfolgreich ist, werden der betroffene UTM Prozess und die UTM-Anwendung abnormal beendet . Bisher wurde bei jedem Verbindungsverlust zur XA Datenbank unmittelbar ohne erneuten Verbindungs-Versuch die UTM-Anwendung abnormal beendet.
Sonstige Änderungen
XA-Meldungen
Die Meldungen bzgl. der XA-Schnittstelle wurden jeweils um die Inserts UTM-Userid und TAC erweitert. Betroffen sind die Meldungen K204-K207, K212-K215 und K217-K218.UTM-Tool KDCEVAL
Im TRACE 2 Satz von KDCEVAL wurde im WAITEND Record der Typ des letzten Auftrags (Börsen-Announcements) aufgenommen (ersten beiden Bytes abdruckbar).