Die für die Kommunikation mit HTTP-Clients wichtigen Anweisungen sind:
- BCAMAPPL
- TPOOL
- HTTP-DESCRIPTOR
- CHAR-SET (BS2000-Systeme)
BCAMAPPL
Mittels einer BCAMAPPL-Anweisung kann in der UTM-Anwendung ein Transportsystem-Endpunkt für HTTP-Clients generiert werden.
BCAMAPPL <bcamname>
,LISTENER-PORT = nummer
,SIGNON-TAC = *NONE
,T-PROT = (SOCKET, *HTTP | *ANY, [SECURE])
[,USER-AUTH = *NONE | *BASIC]
Im Parameter LISTENER-PORT wird die Portnummer festgelegt, über die HTTP-Clients die UTM-Anwendung adressieren müssen.
Eine BCAMAPPL Anweisung, die für den Zugang von HTTP-Clients bestimmt ist, muss explizit ohne Anmeldevorgang generiert werden, d.h. bei dem Parameter SIGNON-TAC muss *NONE angegeben werden.
Als Ausprägung des Socket-Protokolls muss im Parameter T-PROT der Wert *HTTP oder *ANY angegeben werden. Durch Angabe von SECURE kann festgelegt werden, dass die Kommunikation über SSL-Verbindungen erfolgen soll.
Mit dem Parameter USER-AUTH kann festgelegt werden, dass sich ein Benutzer mit UserID und Passwort bei der UTM-Anwendung anmelden muss. Ein Browser fordert den Anwender dann auf, diese Werte einzugeben.
TPOOL
Damit sich ein HTTP-Client an die UTM-Anwendung anschließen kann, muss ein logischer Anschlusspunkt, LTERM-Partner genannt, generiert werden. Mit einer TPOOL-Anweisung können Sie einen Pool von LTERM-Partnern für HTTP-Clients generieren. Der TPOOL muss dabei mit PTYPE=SOCKET, MAP=USER und USP-HDR=NO generiert werden.
TPOOL BCAMAPPL = <bcamname>
,LTERM = <prefix>
,MAP = USER
,NUMBER = nummer
,PRONAM = *ANY | <subnet>
,PTYPE = SOCKET
,USP-HDR = NO
,ENCRYPTION_LEVEL = <level>
Ist der BCAMAPPL mit T-PROT=(SOCKET,...,SECURE) generiert, dann wird der Wert für ENCRYPTION-LEVEL implizit auf TRUSTED gesetzt, d.h. HTTP-Clients, die sich über diesen TPOOL anschließen, werden als vertrauenswürdig betrachtet.
HTTP-DESCRIPTOR
Mit der Anweisung HTTP-DESCRIPTOR kann eine Abbildung der Path-Angabe eines HTTP-Requests auf einen TAC der UTM-Anwendung definiert werden.
HTTP-DESCRIPTOR
<http-descriptor-name>
[,BCAMAPPL = <bcamappl> | *ALL]
[,CONVERT-TEXT = *YES | *NO]
[,HTTP-EXIT = <program-name> | *NONE | *SYSTEM ]
,PATH = C'<path1..254>'
,TAC = <tac>
[,USER-AUTH = *NONE | *BASIC]
Mit dem Parameter BCAMAPPL kann bestimmt werden, ob die Zuordnung von Path zu TAC nur für HTTP-Requests gelten soll, die über einen bestimmten Transportsystem-Zugriffspunkt eintreffen, oder ob sie für alle HTTP-Verbindungen unabhängig vom Zugriffspunkt gültig ist.
In BS2000-Systemen kann mit dem Parameter CONVERT-TEXT festgelegt werden, ob openUTM eine Code-Konvertierung des Message Bodys eines HTTP-Requests durchführen soll.
Im Parameter HTTP-EXIT kann der Anwender ein Programm angeben, das HTTP-Nachrichten für ein existierendes Teilprogramm aufbereitet. openUTM ruft dann dieses Programm für eintreffende und abgehende HTTP-Nachrichten auf. Mit der Angabe von *SYSTEM kann festgelegt werden, dass openUTM für Ausgabenachrichten eine Umsetzung in ein HTML-Format durchführen soll.
Im Parameter PATH wird der Path definiert, der dem im Parameter TAC angegebenen TAC zugeordnet werden soll. Die Path-Angabe darf als letztes Zeichen ein "*" enthalten, das dann als Wildcard-Zeichen bewertet wird. Damit können Path-Angaben, die in ihrem führenden Teil identisch sind, auf einfache Weise dem gleichen TAC zugeordnet werden.
Im Parameter USER-AUTH kann festgelegt werden, ob HTTP-Requests, die diesem HTTP-Deskriptor zugeordnet werden, Authentisierungsdaten mitgeben müssen. Wird hier der Wert *BASIC angegeben, dann muss der Client Angaben zu UserId und Passwort im Authorization Header eines HTTP-Requests mitgeben. Ist dies nicht der Fall, dann fordert openUTM diese Angaben durch Senden einer Response mit Status-Code "401 Unauthorized" an.
CHAR-SET (BS2000-Systeme)
Die Protokollteile einer HTTP-Nachricht (inkl. der Query) sind immer in US-ASCII kodiert und werden im BS2000 von openUTM nach EBCDIC konvertiert. Der Message Body kann auf verschiedene Weise kodiert sein. Damit ist zumindest in BS2000-Systemen eine Konvertierung von Teilen einer HTTP-Nachricht nach EBCDIC erforderlich.
In BS2000-Systemen können mit der Generierungsanweisung CHAR-SET den Code-Konvertierungstabellen SYS1, ..., SYS4 von openUTM Character Set Namen zugeordnet werden.
CHAR-SET { SYS1 | SYS2 | SYS3 | SYS4 }
,NAME = (C'<char-set-name1..32>', ...)
Ist für einen HTTP-DESCRIPTOR in BS2000-Systemen CONVERT-TEXT=*YES generiert, dann analysiert openUTM für HTTP-Requests, die sich diesem HTTP-Deskriptor zuordnen lassen, den Content-Type Header. Ist dort ein bei openUTM mit einer CHAR-SET Anweisung definierter Character Set genannt, dann führt openUTM für den Message Body des Request eine Code-Konvertierung mit der durch die CHAR-SET Anweisung zugeordneten Konvertierungstabelle durch. openUTM verwendet dann die entsprechende Konvertierungstabelle auch für den Message Bodyht der Response.