xSuite Helix Proxy
Der xSuite Helix Proxy ist ein spezieller Webservice, der unabhängig von den regulären Verarbeitungsszenarien läuft. Dieser Webservice agiert wie ein HTTP-Proxy-Server und dient ausschließlich dazu, HTTP-Anfragen aus Fremdanwendungen an die xSuite Helix Cloud weiterzuleiten. Fremdanwendungen unterstützten das Keycloak-Authentifizierungsverfahren in der Regel nicht von sich aus. Die zentrale Aufgabe des xSuite Helix Proxys besteht darin, das benötigte Token vom Keycloak-Server abzurufen und in den HTTP-Kopfdaten der Anfragen zu ergänzen.
Der xSuite Helix Proxy ermittelt für jede eingehende Anfrage anhand der HTTP-Methode und des URL-Pfades der Anfrage eine passende Regel. Diese Regel definiert die Zieladresse in der xSuite Helix Cloud, an die die Anfrage weitergeleitet wird. Die Weiterleitungsregeln werden in der Eigenschaft .Rule[] konfiguriert und zur Laufzeit in der Reihenfolge ihrer Definition ausgewertet. Die erste passende Regel wird herangezogen.
Hinweis
Im Fall von Mehrdeutigkeiten sollten die spezielleren Regeln vor den allgemeineren Regeln angegeben werden.
Der Proxy wird unter der gleichen Basisadresse aufgerufen wie die anderen internen Webservices, d.h. unter WebService.Url[]. Um zu unterscheiden, ob eine Anfrage an einen internen Service gerichtet ist oder vom Proxy an einen externen Service weitergeleitet werden soll, muss die Eigenschaft WebService.UrlBasePath gesetzt sein. Alle Anfragen, die mit diesem Basispfad beginnen, werden von den internen Services verarbeitet. Alle anderen Anfragen werden vom Proxy verarbeitet.
Ein Authentifizierungsverfahren, das für die internen Webservices definiert ist, gilt nicht für den Proxy. Der Proxy unterstützt für die eingehenden Anfragen grundsätzlich keine eigene Authentifizierung. Somit wird nur die Authentifizierung am Zielsystem durchgeführt, was in der Regel die Keycloak-Authentifizierung der xSuite Helix Cloud ist.
Hinweis
Der xSuite Helix Proxy sollte in einer eigenständigen Programminstanz laufen, die nicht gleichzeitig für die Ausführung regulärer Verarbeitungsszenarien zuständig ist. Auf diese Weise kann ein möglichst hoher Datendurchsatz gewährleistet werden.
Das zeitintensive Logging, insbesondere in eine relationale Datenbank, sollte reduziert oder komplett deaktiviert werden. Die Konfigurationseigenschaft .ContentLogFolder sollte nicht im regulären Betrieb genutzt werden.
Eigenschaft | Beschreibung |
|---|---|
XSuiteHelixProxy.Activate | Wahrheitswert, ob der xSuite Helix Proxy aktiviert ist Wenn dieser Wert fehlt, wird die Aktivierung des xSuite Helix Proxys daran festgemacht, ob mindestens eine notwendige Regel definiert ist |
XSuiteHelixProxy.ProxyServer | Verbindungsdaten eines HTTP-Proxy-Servers Wenn die Kommunikation zwischen dem xSuite Helix Proxy und der xSuite Helix Cloud über einen normalen HTTP-Proxy-Server erfolgen soll, sind hier die Verbindungsdaten anzugeben. Syntax: siehe Proxy-Server-Verbindung |
XSuiteHelixProxy.Keycloak(*) | Eigenschaften für die Authentifizierung gegenüber der xSuite Helix Cloud über einen Keycloak-Dienst Syntax: siehe Keycloak-Authentifizierung Achtung: Bei Weglassung dieser Angaben werden die Anfragen an den Proxy nicht um die Authentifizierungsdaten ergänzt. |
XSuiteHelixProxy.RequestTimeout | optionaler Timeout-Wert in Sekunden für die Anfragen, die an die xSuite Helix Cloud weitergeleitet werden Der Timeout-Wert gilt global für alle Anfragen. Standardmäßig ist kein Timeout gesetzt. |
XSuiteHelixProxy.ForceConnectionClose | Wahrheitswert, ob die Verbindung zwischen Client und Proxy zwangsweise geschlossen wird (HTTP-Header "connection: close") Standardwert: HinweisZwischen dem Proxy und der xSuite Helix Cloud wird die Verbindung hingegen grundsätzlich sofort wieder geschlossen, da der Proxy in diese Richtung keine Verwaltung offener Verbindungen implementiert. |
XSuiteHelixProxy.ForceProtocolVersion | optionale Angabe einer festen HTTP-Protokollversion für die Anfrage vom Proxy an die xSuite Helix Cloud, z. B. Standardmäßig wird die Version genutzt, die vom Client an den Proxy übermittelt wird. |
XSuiteHelixProxy.CacheFileFilter | optionaler Dateinamensfilter für Web-Dateien aus der xSuite Helix Cloud, die am Proxy zwischengespeichert werden In der Regel sind dies nur statische Web-Dateien. Diese Dateien müssen dann nicht bei jedem Aufruf erneut aus der Cloud geladen werden. |
XSuiteHelixProxy.ContentLogFolder | optionaler Ordnerpfad, in dem die vollständigen Inhalte der an den Proxy gestellten Anfragen und aus der xSuite Helix Cloud zurückgelieferten Antworten protokolliert werden Diese Eigenschaft ist primär für Analysezwecke und sollte nicht im regulären Betrieb genutzt werden. |
XSuiteHelixProxy.Rule[].Name | optionaler Name einer Weiterleitungsregel für die Anzeige im Logging |
XSuiteHelixProxy.Rule[].Method | optionale kommaseparierte Auflistung von HTTP-Methoden (z. B."GET", "POST"), für die die Regel gilt Standardwert: |
XSuiteHelixProxy.Rule[].Path* | URL-Pfad der Anfrage, für den die Regel gilt Dabei ist nur der Teil der URL hinter der obigen |
XSuiteHelixProxy.Rule[].ToUrlMacro* | Feldmakroausdruck, der die vollständige Ziel-URL ergibt (inklusive Protokoll/Server/Port), an die die Anfrage weitergeleitet wird Im Regelfall einer statischen Zieladresse ist hier eine String-Konstante anzugeben. Wenn die Zieladresse mit Bei der Variante Wenn in |
XSuiteHelixProxy.Rule[].ResponseHeader[] | optionale Definition von HTTP-Kopfzeilen Die HTTP-Kopfzeilen werden den Kopfzeilen aus der Originalantwort der xSuite Helix Cloud in der Antwort an den Client künstlich hinzugefügt oder die vorhandenen Kopfzeilen werden überschreiben. Syntaktisch entspricht ein solcher Konfigurationswert dem normalen Aufbau einer Kopfzeile, d.h. Als Wert sind auch bestimmte Variablen nutzbar, die aus den Kopfdaten der ursprünglichen Client-Anfrage gewonnen werden. Die Syntax hierfür ist |
XSuiteHelixProxy.Rule[].RequestTimeout | optionaler Timeout-Wert in Sekunden für die an die xSuite Helix Cloud weitergeleiteten Anfragen Der Timeout-Wert gilt nur für diese Regel. Dieser Timeout-Wert wird nur angewendet, wenn der Wert kleiner ist als der Wert in der übergeordneten Eigenschaft Standardmäßig ist kein Timeout gesetzt. |