Backend Connections

Im Folgenden werden die verschiedenen Konfigurationsmöglichkeiten der Backend Connections vorgestellt und beschrieben.

backend connections overview

Anlegen einer Backend Connection

Nachfolgend sind die Schritte, um eine Backend Connection anzulegen.

  1. Im Reiter Backend Connections eine neue Komponente hinzufügen.
    Die Art der Backend Connection wird durch das Eingabefeld "Typ" ausgewählt. Je nach Auswahl des Typs werden die spezifischen Konfigurationsoptionen angezeigt.

    add backend connection

Allgemeine Modulkonfiguration

Dies sind die Konfigurationsparameter, die bei allen Backend Connections vorhanden sind.

Setting (Key) Gruppe Typ Beschreibung

ModuleHeader
(moduleHeader_enabled)

Module

bool

Ermöglicht das De-/Aktivieren des ModuleHeaders

Module_Description
(moduleHeader_description)

Module

text

Ermöglicht die Hinterlegung einer kurzen Beschreibung des Moduls. Kann z.B. im ModuleHeader angezeigt werden.

Module_Icon
(module_iconCls)

Module

text

Angezeigtes FontAwesome-Icon der Backend Connection Instanz.

Module_Name
(module_name)

Module

text

Name des Moduls

Verbindungstypen

"http_proxy"

Dieser Verbindungstyp ermöglicht beispielsweise, per External Content Modulkomponente auf einen Server zuzugreifen, der eine Anmeldung per BasicAuth erfordert oder nicht direkt, sondern ausschließlich via Proxy erreichbar ist.

Setting (Key) Gruppe Typ Beschreibung

Connection_Password
(connectionPassword)

Module

text

Password für Authentifizierung der Connection (BasicAuth am Zielserver)

Connection_Username
(connectionUsername)

Connection

text

Username für Authentifizierung der Connection

Connection_Timeout
(connectionTimeout)

Connection

number

Maximales Timeout der Connection.
Default: 180

Connection_CheckCsrfToken
(checkCsrfToken)

Security

bool

Ermöglicht das De-/Aktivieren des CSRF Token Checks.

Connection_FilterBpcSession
(filterSessionCookie)

Security

bool

Ermöglicht das De-/Aktivieren des Session-Filters.
Default: false

Connection_InjectUserSessionJWT
(injectSessionJwt)

Security

bool

Es wird ein JWT im Header gesetzt, der die Session-Informationen enthält.
Default: false

Beispiel Call
GET /?_dc=1569249450661 HTTP/1.1
X-Bpc-Session: eyJhbGciOiJub25lIn0.eyJzdWIiOiJicGMiLCJleHAiOjE1NjkyNDk1MTAsImJwY1VzZXJTZXNzaW9uIjoie1wib3JnYW5pc2F0aW9uc1wiOltcIkRFRkFVTFRcIl0sXCJpbmFjdGl2ZU9yZ2FuaXNhdGlvbnNcIjpbXSxcInJvbGVzXCI6W1wiYnBjYWRtaW5cIixcImFDbGllbnRSb2xlXCIsXCJicGN1c2VyXCJdLFwicmlnaHRzXCI6W1wibG9hZE1vZHVsZV9ibGFua1wiXSxcInByaW5jaXBhbHNcIjp7fSxcImxvZ2luQ29udGV4dFwiOm51bGwsXCJjdXN0b21EYXRhXCI6e1wib2lkYy51c2VySW5mb0pXVFwiOlwiZXlKaGJHY2lPaUpJVXpVeE1pSXNJblI1Y0NJZ09pQWlTbGRVSWl3aWEybGtJaUE2SUNJeU9EQTBNVGczTVMwME0yRXpMVFEwTkRBdFlXVXlaUzFoTkdGaVpUTTFORFZpTXpJaWZRLmV5SnpkV0lpT2lJM1ptRXdNV1l4WVMwd056WTVMVFE0WTJVdE9UUXpNUzFoT0RVNFlqazVZMkV4TjJFaUxDSmhkV1FpT2lKaWNHTXRZMjl5WlNJc0ltRmtaSEpsYzNNaU9udDlMQ0psYldGcGJGOTJaWEpwWm1sbFpDSTZkSEoxWlN3aVluQmpYM0p2YkdWeklqcGJJbUp3WTJGa2JXbHVJaXdpWW5CamRYTmxjaUlzSW1GRGJHbGxiblJTYjJ4bElsMHNJbTVoYldVaU9pSlVhVzF2SUZacGNuUWlMQ0pwYzNNaU9pSm9kSFJ3T2k4dlpHVjJNRFl1ZG1seWRHbHRieTV1WlhRNk9EQTVNUzloZFhSb0wzSmxZV3h0Y3k5aWNHTWlMQ0p3Y21WbVpYSnlaV1JmZFhObGNtNWhiV1VpT2lKaWNHTmhaRzFwYmlJc0ltZHBkbVZ1WDI1aGJXVWlPaUpVYVcxdklpd2labUZ0YVd4NVgyNWhiV1VpT2lKV2FYSjBJaXdpWlcxaGFXd2lPaUppY0dOaFpHMXBia0JsZUdGdGNHeGxMbU52YlNKOS50UDNqSm84Nk9OVzBsYk00N25lX1owS2dNSVhDdDY0NWhrd0sxV2h5NE10QjFaOGU5THh3NEk3Nm4tNHpZa0xHZ0FEa2ExRzZMa1dJNG5DRGpidEo3Z1wifSxcImZpcnN0TmFtZVwiOlwiVGltb1wiLFwibGFzdE5hbWVcIjpcIlZpcnRcIixcImxvZ2luTmFtZVwiOlwiYnBjYWRtaW5cIixcImV4cGlyYXRpb25EYXRlXCI6MTU2OTI0OTY2MzAwMH0ifQ.
Cookie: oidc.userInfoJWT=eyJhbGciOiJIUzUxMiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIyODA0MTg3MS00M2EzLTQ0NDAtYWUyZS1hNGFiZTM1NDViMzIifQ.eyJzdWIiOiI3ZmEwMWYxYS0wNzY5LTQ4Y2UtOTQzMS1hODU4Yjk5Y2ExN2EiLCJhdWQiOiJicGMtY29yZSIsImFkZHJlc3MiOnt9LCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiYnBjX3JvbGVzIjpbImJwY2FkbWluIiwiYnBjdXNlciIsImFDbGllbnRSb2xlIl0sIm5hbWUiOiJUaW1vIFZpcnQiLCJpc3MiOiJodHRwOi8vZGV2MDYudmlydGltby5uZXQ6ODA5MS9hdXRoL3JlYWxtcy9icGMiLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJicGNhZG1pbiIsImdpdmVuX25hbWUiOiJUaW1vIiwiZmFtaWx5X25hbWUiOiJWaXJ0IiwiZW1haWwiOiJicGNhZG1pbkBleGFtcGxlLmNvbSJ9.tP3jJo86ONW0lbM47ne_Z0KgMIXCt645hkwK1Why4MtB1Z8e9Lxw4I76n-4zYkLGgADka1G6LkWI4nCDjbtJ7g; oidc=7fa01f1a-0769-48ce-9431-a858b99ca17a
Accept: */*,*
X-Requested-With: XMLHttpRequest
X-Forwarded-Host: localhost:8181
Referer: http://localhost:8181/?state=5E1qtNCuwF0lLUIACy0pT_WszctgR2Q7ArhKSGjJcGU&session_state=c02b7d89-7b3f-464a-81ab-6020c8f1888b&code=c1004b7b-923d-4915-9539-6823e535c424.c02b7d89-7b3f-464a-81ab-6020c8f1888b.19ca2df0-a9a3-40f9-a858-072680885ba2
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36
DNT: 1
Pragma: no-cache
Cache-Control: no-cache
Accept-Language: de-DE,de;q=0.9,en;q=0.8,en-US;q=0.7
accept-encoding: gzip, deflate, br
Host: xyz.local:1234
Connection: keep-alive

In dieser Konfiguration haben wir zwei verschiedene Informationen der User Session:

  • Cookie oidc.userInfoJWT enthält den JWT mit UserDaten wie er vom Keycloak kommt. Dieser ist signiert und kann über OIDC validiert werden.

  • Header X-Bpc-Session enthält die serialisierte BpcUserSession als JWT (plain, nicht signiert)

Connection_UntrustedCertificates
(allowUntrustedConnections)

Security

text

Es wird allen Zertifikaten vertraut sowie der Common Name (CN) Check übersprungen.
Default: false

Http_Header_Filter
(httpHeaderFilter)

Proxy

json

Liste der Header Namen, die rausgefiltert werden sollen.

Default:

[
  "X-Frame-Options"
]

ProxyServer_Port
(proxyServerPort)

Proxy

number

Der Port unter dem der Proxy-Server erreichbar ist.
Default: 80

ProxyServer_URL
(proxyServer)

Proxy

text

Die Adresse des zu verwendenden Proxy-Servers. Bleibt leer, wenn eine direkte Verbindung zum Zielserver möglich ist.

Target_BaseURL
(connectionBaseUrl)

Target

text

Dieser Parameter definiert die Basis-URL zum Zielsystem und wird bei jeder Verwendung vorangestellt.

"identity_provider"

Dieser Verbindungstyp ermöglicht die Konfiguration des verwendeten Identity Providers.

Setting (Key) Gruppe Typ Beschreibung

IdentityProvider_AdditionalInfoEnabled
(identityProvider.additionalInfoEnabled)

AdditionalInfo

bool

Flag ob der Additional Info-Endpunkt aufgerufen werden soll oder nicht.
Default: false

IdentityProvider_AdditionalInfoEntriesPrefix
(identityProvider.additionalInfoEntriesPrefix)

AdditionalInfo

text

Prefix für die Daten des Additional Info-Endpunktes.
Default: x-

IdentityProvider_AdditionalInfoURL
(identityProvider.additionalInfoURL)

AdditionalInfo

text

Endpunkt, um die User Sessions mit weiteren Daten zu füllen.
Default: https://server:port/endpoint

IdentityProvider_AdditionalInfoURLBasicAuthUsername
(identityProvider.additionalInfoURLBasicAuthUsername)

AdditionalInfo

text

Benutzername, falls der Additional Info-Endpunkt per Basic Auth abgesichert ist

IdentityProvider_AdditionalInfoURLBasicAuthPassword
(identityProvider.additionalInfoURLBasicAuthPassword)

AdditionalInfo

password

Passwort falls der Additional Info Endpunkt per Basic Auth abgesichert ist

IdentityProvider
(identityProvider)

Config

text/ combobox

Identity Provider Service.
Werte: inubit, jdbc, karaf, keycloak, oidc

Default: karaf

IdentityProvider_URL
(IdentityProvider.url)

Config

text

Die URL, unter welcher der Identity Provider erreichbar ist

IdentityProvider_Configuration(Keycloak, OIDC)
(identityProvider_configuration)

Config

json

Configuration Object für Identity Provider

IdentityProvider_Mappings
(identityProvider_mappings)

Config

json

Mapping der Rolle zwischen BPC und Identity Provider.

Default:

{
    "organisations":
    {
        "DEFAULT":
        {
            "assignedRoles": [],
            "assignedRights": [],
            "assignedOrganisations": []
        }
    },
    "roles":
    {
        "bpcuser":
        {
            "assignedRoles": [],
            "assignedRights": [
                "loadModule_blank",
                "loadModule_account"
            ]
        }
    },
     "rights": {}
}

IdentityProvider_SelfServiceURL
(identityProvider_ussUrl)

Config

text

Die URL, unter welcher der Self Service Dienst erreichbar ist

IdentityProvider_PasswordValidationRegExp
(identityProvider_pwdValidationRegExp)

Config

text

Regular Expression(siehe Java Dokumentation) zur Validierung von Passwörtern. Zum Beispiel muss bei .{8,} das Passwort mindestens 8 Zeichen lang sein.

Komplexes Beispiel bestehend aus mehreren Teilen: (?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])(?=\S+$).{8,}

  • (?=.*[0-9]) - Mindestens eine Zahl

  • (?=.*[a-z]) - Mindestens ein kleiner Buchstabe

  • (?=.*[A-Z]) - Mindestens ein großer Buchstabe

  • (?=.*[@#$%^&+=]) - Mindestens ein Sonderzeichen

  • (?=\S+$) - Keine Leerzeichen (Whitespace)

  • .{8,} - Mindestens 8 Zeichen insgesamt

IdentityProvider_ChangeOrganisationEnabled
(identityProvider_ussChangeOrganisationEnabled)

Frontend

bool

Ermöglicht das De-/Aktivieren der Änderung von Organisation in Oberfläche.
Default: false

IdentityProvider_ChangePasswordEnabled
(identityProvider_ussChangePasswordEnabled)

Frontend

bool

Ermöglicht das De-/Aktivieren der Änderung von Password in Oberfläche.
Default: false

"deployment_system"

Dieser Verbindungstyp ermöglicht die Konfiguration der BPC-Systeme, die beim Deployment als Quelle und Ziel angesprochen werden sollen.

Setting (Key) Gruppe Typ Beschreibung

DeploymentSystem_SortPriority
(sortPriority)

Config

number

Anpassung der Sortierreihenfolge (Auswahlbox im Deployment Dialog). Default: 1000

DeploymentSystem_URL+ (url)

Target

text

Basis URL zum Zielsystem und wird bei jeder Verwendung vorangestellt.
Default: https://example.com:8181

DeploymentSystem_AllowUntrustedConnections
(allowUntrustedConnection)

Connection

bool

Unsichere Verbindungen zulassen.
Default: false

DeploymentSystem_ApiKey
(api_key)

Connection

text

API Key des Zielsystems

"data_source"

Dieser Verbindungstyp wird für die Konfiguration der anzusprechenden Datenbanken verwendet.

Setting (Key) Gruppe Typ Beschreibung

DataSource_Configuration
(configuration)

Datasource

json

Zusätzliche Data Source Konfigurationsoptionen, die nicht durch die Allgemeinen (DataSource_User, …​) abgedeckt sind.

Default:

{
    "pool": "dbcp2",
    "xa": "true",
    "pool.maxTotal": "10",
    "pool.maxIdle": "5",
    "pool.minIdle": "2"
}

DataSource_DriverName
(driverName)

Datasource

text/combobox

Datenbank-Treiber wie oracle, mysql, mariadb

DataSource_Password
(password)

Datasource

text

Passwort des Datenbankbenutzers

DataSource_URL
(url)

Datasource

text

JDBC Verbindungs-URL zur Datenbank.
Default: jdbc:oracle:thin:@example.com:1521:XE

DataSource_User
(user)

Datasource

text

Name des Datenbankbenutzers

DataSource_Configuration

Im Konfigurationsparameter "DataSource_Configuration" wird hauptsächlich der verwendete Pool mit den Datenverbindungen konfiguriert. Eine Datenquelle (Data Source) hält einen Pool mit n-Verbindungen zur Datenbank vor. Die einzelnen Replikationsjobs holen sich jeweils eine solche Verbindung und geben sie nach getaner Arbeit wieder an den Pool zurück. Die Größe ist deshalb sinnvoll zu wählen. Diesen Wert zu hoch (>8 oder >16) anzusetzen ist nicht unbedingt von Vorteil bzw. kann sogar zu Fehlern führen, wenn zum Beispiel die Oracle-Datenbank nicht so viele gleichzeitige Verbindungen zulässt (= DB Admin nach der sinnvollen Anzahl fragen). Weitere Pool-Einstellungen sind HIER zu finden.

Setting Typ Beispiel Beschreibung

pool

String

dbcp2

der zu verwendende Pool

xa

String

true

als XA Resource festlegen. Aktiviert die Möglichkeit für verteilte Transaktionen (JDBC XA). Es wird hier true als Einstellung empfohlen.

pool.minIdle

String

2

The minimum number of connections that can remain idle in the pool, without extra ones being created, or zero to create none.

pool.maxIdle

String

5

The maximum number of connections that can remain idle in the pool, without extra ones being released, or negative for no limit.

pool.maxTotal

String

10

Max. Anzahl der Datenbank-Verbindungen im Pool

Kommt es bei Oracle immer wieder zu Closed Connection Fehlern, dann folgende Einstellungen noch mit aufnehmen.

Setting Typ Beispiel Beschreibung

pool.testOnBorrow

String

true

Validierung der DB-Verbindung bei Entnahme aus dem Pool.
Default: false

pool.testOnReturn

String

true

Validierung der DB-Verbindung beim Zurücklegen in den Pool.
Default: false

factory.validationQuery

String

select 1 from dual

SQL Query die genau einen Treffer zurückgibt. Dies wird zum Testen der Verbindung genutzt.
Default: -

factory.validationQueryTimeout

String

15

Ausführungs-Timeout in Sekunden für die festgelegte Validation Query.
Default: no timeout

Copy&Paste
{
...
    "pool.testOnBorrow": "true",
    "pool.testOnReturn": "true",
    "factory.validationQuery": "select 1 from dual",
    "factory.validationQueryTimeout": "15",
...
}

Dokumentation zu den Parametern: BasicDataSource Configuration Parameters

pool.testOnBorrow scheint, anders als in der Dokumentation beschrieben, per Default deaktiviert zu sein!


Keywords: