Dokumentation zur Installation neue UI ohne Docker

Installation neue UI ohne Docker

Diese Anleitung wird nicht mehr gepflegt. Bei Fragen wenden Sie sich gerne an Herrn Brewer: marcian.brewer@bertelsmann.de

Was beinhaltet diese Dokumentation:

Installation neue UI in einem Webserver (in diesem Fall nginx) mit neu aufgesetztem tomcat, abgesichert über Keycloak mit postgresql Datenbank auf einem Windows System. Keine Abgesicherte Verbindung der UI, über https.

VORSICHT: Wie empfehlen die neue UI über https abzusichern!

Voraussetzung:

Die folgende Installation setzt auf einer bereits bestehenden B2B mit Tomcat-Knoten und laufender Datenbank auf. Da die Admin UI erst in Kürze veröffentlicht wird, ist das ein einfacher Weg, laufende Services zu verwenden.

Zielbild:

Zum Schluss gehört zur Landschaft ein Tomcat mit alter Konfiguration (auf dem ggf. schon Nachrichten eingespielt wurden), ein neuer Tomcat mit Keycloak Konfiguration, ein Keycloak und ein nginx-Webserver in dem die neue UI läuft.

Kopie des bestehenden Tomcat Knoten anlegen (Teil 1)

Auf diesem Knoten sollten auch später keine Services laufen. Er ist nur für die UI Kommunikation zuständig.

  1. Kopiere den bereits bestehenden Tomcat Knoten um einen neuen anzulegen, alternativ kann auch eine neue tomcat.zip heruntergeladen und entpackt werden.
  2. Änderung des Connector und des Shutdown Ports in der server.xml im conf-Ordner:

    Server port="xxxx" shutdown="SHUTDOWN"
    Connector port="xxxx" protocol="HTTP/1.1"
    

Die Ports müssen sich vom bestehenden B2B Knoten unterscheiden, bitte nicht 8080 verwenden, da dies der Keycloak-Port sein wird.

Start Keycloak Installation im Standalone Mode

  1. Unter https://www.keycloak.org/downloads.html unter Server - Keycloak die zip-Datei herunter laden und entpacken.
  2. Ggf. Port Änderung in der standalone.xml: unter /standalone/configuration liegt die standalone.xml, im Abschnitt socket-binding-group kann der Port des socket-binding mit name=“http“ geändert werden, wenn es sich um https handelt auf 443, sonst 8080 behalten (darf sonst nicht mehr verwendet werden)

Aufsetzen neuer Datenbank für Keycloak (um Standard H2 Datenbank in Keycloak abzulösen)

  1. In diesem Beispiel wird eine neue database in der Postgres-Datenbank erzeugt
  2. Über die B2B database einen keycloak user anlegen,dieser kann auch anders benannt werden:

     create user keycloak
     alter user keycloak password 'PASSWORT'
     
  3. Neue Datenbank mit keycloak owner anlegen

     CREATE DATABASE keycloak
     WITH
     OWNER = keycloak
     ENCODING = 'UTF8'
     CONNECTION LIMIT = -1;
     
  4. Neue connection anlegen

  5. Datenbank-Treiber in Keycloak hinterlegen: unter /modules/system/layers/keycloak/org einen Ordner anlegen, z.B postgresql/main und dort die postgresql.jar hinterlegen, die auch im lib-Verzeichnis des Tomcats hinterlegt ist.
  6. Im selben Verzeichnis eine module.xml anlegen (siehe unten), in dieser muss der Name der Treiber-jar verwendet werden.

    module.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <module xmlns="urn:jboss:module:1.1" name="org.postgresql">
      <resources>
        <resource-root path="postgresql.jar"/>
      </resources>
      <dependencies>
        <module name="javax.api"/>
        <module name="javax.transaction.api"/>
        <module name="javax.servlet.api" optional="true"/>
      </dependencies>
    </module>
    
  7. Im keycloak unter /standalone/configuration die standalone.xml anpassen: unter datasources die datasource für postgresql zusätzlich zu den H2 Informationen hinterlegen. Vorsicht: connection-url entsprechen der eigenen Konfiguration hinterlegen, sowie auch beim username und password

    <datasource jndi-name="java:jboss/datasources/KeycloakDS" pool-name="KeycloakDS" enabled="true" use-java-context="true" statistics-enabled="${wildfly.datasources.statistics-enabled:${wildfly.statistics-enabled:false}}">
                    <connection-url>jdbc:postgresql://localhost:5432/keycloak</connection-url>
                    <driver>postgres</driver>
                    <security>
                        <user-name>Username</user-name>
                        <password>PASSWORT</password>
                    </security>
    </datasource>
    
  8. Falls schon eine datasource zum datasource jndi-name=”java:jboss/datasources/KeycloakDS” existiert, muss diese gelöscht werden, so dass nach der Bearbeitung nur noch zwei datasource-tags existieren, siehe nachfolgenden Screenshot

  9. Zweite Anpassung der standalone.xml: unter drivers den driver für postgres hinterlegen, zusätzlich zu dem der H2 Datenbank

    <driver name="postgres" module="org.postgresql">
                        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>  </driver>
    

Keycloak NLI Theme

Die Standard Keycloak Oberfläche kann durch ein NLI Theme ersetzt werden. Die Installation ist hier beschrieben.

AdminAccount, Realm und ersten User in Keycloak anlegen

  1. Start von Keycloak über die standaolne.bat in /bin
  2. Zuerst muss ein admin account in keycloak angelegt werden

    Folgende Variante funktioniert, wenn der Keycloak auf dem eigenen Rechner installiert wurde (sonst springe zu Punkt 4)

  3. Öffnen von http://localhost:8080/auth (hier muss der Port verwendet werden, der in der standalone.xml eingetragen ist) und User und Passwort für einen admin account eingeben

  4. ALTERNATIVE: Zum Anlegen des admin-Users. Über die Konsole ins bin-Verzeichnis des Keycloak navigieren und dort folgendes eingeben: add-user-keycloak.bat -r master -u <username> -p <password>

  5. Auf Administration Console auf der Welcome Page klicken oder über http://localhost:8080/auth/admin/ in den admin account einloggen (TIP: falls der Browser beim Anmelden in Keycloak ein Cache Problem anzeigt, kann eine Inkognito Sitzung verwendet werden)
  6. Realm anlegen: Add realm anklicken und einen Namen für den Realm eingeben. Im Bild unten wird NLI als Realm-Name verwendet. Normalerweise sollte der Realm-Name das System beschreiben, da je System ein Realm benötigt wird. Das heißt möglichst sollte Dev/QA/Prod oder ähnliches im Namen enthalten sein, sowie Netz/Lief, sollte es getrennte Systeme geben.

  7. Create anklicken
  8. In den realm wechseln, der gerade angelegt wurde (siehe nächster Screenshot, dort ist der realm NLI ausgewählt)

  9. User in diesem Realm anlegen: Unter Users(links in der Leiste) rechts auf Add user gehen

  10. Namen im Feld Username eingeben und auf Save klicken
  11. Credentials Tab auswählen und Passwort festlegen: hier kann Temporary angeklickt werden um dieses ggf. beim ersten Login nochmal zu ändern

HINWEIS: Über User Federation können User alternativ über LDAP eingebunden werden oder aus der B2B-DB migriert werden (für das Migrations-Tool siehe weiter unten)

Test des neu angelegten Users in Keycloak (TIPP: falls der Browser beim Anmelden in Keycloak ein Cache Problem anzeigt, kann eine Inkognito Sitzung verwendet werden)

  1. Sign Out aus der admin Console (rechts oben Sign Out auswählen)
  2. Über http://localhost:8080/auth/realms/NLI/account mit dem neu angelegten User einloggen und ggf. das Passwort ändern, falls es beim Erstellen des Users angehakt wurde
  3. In der Account Console die sich öffnet Email, First name und Last name eintragen und speichern

Einrichtung von zwei clients im Keycloak für das B2B-Backend und die neue UI

Pro Anwendung, Service oder Microservice, welcher zu einer Landschaft von Anwendungen gehört muss im Realm ein Client angelegt werden. Dazu muss wieder in den admin account des Keycloaks gewechselt werden.

  1. Erstellen eines Clients für das B2B-Backend (in der Navigation auf client und dann auf create): Vorschlag Client ID: b2b-tomcat. Die Root-URL sieht wie folgt aus: http://<host>:<port>/b2bbp-engine/ , wobei der Port der connector Port aus der server.xml des tomcat Knotens ist (siehe hierzu den nächsten Abschnitt Tomcat Knoten mit Keycloak Anbindung aufsetzen, in dem dieser Port nochmal geändert wird)

  2. Bei den clients muss der Standard Flow Enabled sein. Als AccessType ist beim b2b-tomcat confidential zu setzen.
  3. Erstellen eines weiteren Clients für die B2BUI: Name des clients kann gewählt werden, z.B. b2b-functional-ui sein.
  4. Der Port in der Root URL ist wählbar, Vorschlag ist hier 80 (Screenshots sind mit Port 4040). Er findet sich unten im Abschnitt Installation neue UI im Webserver wieder

  5. Für einen client, der zur UI gehört muss der Standard Flow Enabled aktiviert sein, die anderen beiden müssen deaktiviert sein, siehe folgenden Screenshot. Als access-type ist bei Frontends public zu setzen.

Tomcat Knoten mit Keycloak Anbindung aufsetzen (Teil 2)

  1. Tomcat-Adapter von Keycloak muss verwendet werden: Hier https://www.keycloak.org/downloads.html kann der Tomcat-Adapter für die entsprechende Tomcat-Version heruntergeladen werden

  2. Die jar-Dateien müssen im tomcat/lib- Verzeichnis des unter Teil 1 aufgesetzten Tomcat-Knoten, hinterlegt werden
  3. Anlegen der keycloak.json unter /tomcat_all: es muss der korrekte realm Name verwendet werden, der gewählte Port aus der standalone.xml des Keycloak, sowie als resource der client-Name des Clients der für das Backend erstellt wurde. Vorschlag war hier b2b-tomcat.

    {
      "realm": "NLI",
      "auth-server-url": "http://localhost:8080/auth",
      "ssl-required": "external",
      "resource": "b2b-tomcat-war",
      "confidential-port": 0
    }
    
  4. Anpassung der b2bbp-engine.xml: Folgende Zeilen müssen vor der resource hinterlegt werden, wobei <my-path> mit dem entsprechenden Pfad zum tomcat_all-Ordner ist, unter dem die keycloak.json liegt

    <Valve className="org.keycloak.adapters.tomcat.KeycloakAuthenticatorValve"/>
    <Parameter name="keycloak.config.file" value="<my-path>/tomcat_all/keycloak.json" override="false"/>
    

  5. Anpassung server.xml im conf-Ordner: alle Einträge zu Realms müssen in der server.xml auskommentiert werden

  6. Zur Absicherung der B2B REST-Endpunkte durch Keycloak muss folgende Eigenschaft an den CATALINA_OPTS in der setenv.sh ergänzt werden: -Dspring.profiles.active=roles-activated

  7. Die neue UI erfordert Anpassungen der B2B Datenbank.

  8. Falls die Paginierung im Nachrichtenmonitor nicht funktioniert, muss beim Starten des Tomcats das zur jeweiliger Datenbankversion passende Hibernate Dialect angegeben werden. Dazu muss ein zusätzlicher JAVA_OPTS Startparameter gesetzt werden: -Dhibernate.dialect=org.hibernate.dialect.<Dialect>. Der Platzhalter muss mit dem datenbankspezifischen Dialect ersetzt werden, siehe hier: https://docs.jboss.org/hibernate/orm/current/javadocs/org/hibernate/dialect/package-summary.html. Zum Beispiel -Dhibernate.dialect=org.hibernate.dialect.Oracle9iDialect für Oracle 9i Datenbank.

  9. Wenn bei der Volltestsuche oder bei der Suche in Arbeitsvorräten Fehler vorkommen (z. B. “ORA-01795: maximum number of expressions in a list is 1000”), muss beim Starten des Tomcats folgende Java-Property gesetzt werden: -DauxiliarySearchThreshold=1000. Die Umgebungsvariable AUXILIARY_SEARCH_THRESHOLD bewirkt dasselbe.

Installation neue UI im Webserver

  1. Download der nginx.zip Datei unter http://nginx.org/en/download.html
  2. Download des B2B-UI Releases über B2B Downloads
  3. Entpacken beider zip Dateien und hinterlegen des Deployments (kompletter B2B-UI Ordner) in nginx/html

  4. Konfiguration der /conf/nginx.conf: der Abschnitt zum Server wird mit Nachfolgendem ersetzt: Der “listen”-Port muss dem Port aus dem vorher konfiguriertem Client für die functional-ui entsprechen. Des Weiteren muss die “proxy-pass”-Adresse des Tomcats, der über Keycloak abgesichert ist, hinterlegt werden, damit die neue UI auf diese zugreifen kann. Unter “location /B2B-UI/api/b2b-user-messages/system-messages” wird die Verbindung zu dem UserMessages-Microservices konfiguriert. Im ersten Schritt kann diese Konfiguration weggelassen oder auskommentiert werden.
    server {
        listen       80;
        server_name  localhost;
        absolute_redirect off;
        client_max_body_size 500M;
    
        #charset koi8-r;
    
        #access_log  logs/host.access.log  main;
    
        location /B2B-UI {
            alias  html/B2B-UI;
            try_files $uri$args $uri$args/ /B2B-UI/index.html;
        }
    
        location /B2B-UI/b2bNews/ {
                 proxy_pass   https://b2bbp.next-level-help.org/feed.news.xml;
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html/B2B-UI;
        }
    
    #proxy for rest api call
        location /B2B-UI/api/ {
                proxy_pass   http://localhost:8080/b2bbp-engine/api/;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_cache_bypass $http_upgrade;
        }
    
        location /B2B-UI/api/b2b-user-messages/system-messages {
                proxy_pass   http://localhost:8888/system-messages;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header Host $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header        X-Forwarded-Proto $scheme;
                proxy_cache_bypass $http_upgrade;
        }
      }
    

    Beachten Sie auch die Property client_max_body_size 500M; Diese Property bestimmt die maximale Dateigröße beim Fileupload. Dies ist z.B. beim Customizing Upload relevant.

  5. Hinterlegen einer keycloak.json unter /html/B2B-UI/assets/config (Ordner anlegen): unter oauthServerUrl ist der Server mit Port des konfigurierten Keycloaks zu hinterlegen (Portvorschlag war 8080), der keycloakRealm muss ebenfalls den entsprechenden Namen des realms beinhalten. Vorsicht: in dieser Installationsanleitung wird disableHttps auf true gesetzt

     {
       "auth-server-url": "http://localhost:8080/auth",
       "keycloakRealm": "NLI",
       "disableAuth": false,
       "disableHttps": true
     }
    

    Standardmäßig muss die keycloak.json Datei im Verzeichnis /html/B2B-UI/assets/config abgelegt werden. Mit Hilfe der nginx.conf Datei können sie auch einen alternativen Ablageort definieren. So können sie leicht neue Versionen der B2B-UI deployen ohne dabei die keycloak.json erneut anpassen zu müssen. Fügen sie dafür die folgende Konfiguration in die nginx.conf ein. Das Beispiel ist so konfiguriert, dass im Verzeichnis nginx/conf nach der keycloak.json gesucht wird.

         # always use local keycloak.json to override the deployed keycloak.json		
         location /assets/config/keycloak.json {
             root   conf;
             try_files /keycloak.json @original;
         }
    
         # fallback to original file if the local keycloak.json is not found
         location @original {
             root   B2B-UI;
             try_files $uri $uri/;
         }
    
  6. Start des nginx über nginx.exe: es müssen zwei Prozesse im Task-Manager unter Details angezeigt werden

    Weitere allgemeine Hinweise zum Starten von Services finden Sie hier.

  7. Hinterlegen der Rollen in Keycloak

    Liste der verfügbaren Rollen

  8. Zuweisen aller Rollen dem angelegten User: Den User auswählen und unter Role Mappings alle angelegten Rollen dem User assignen

  9. Aufruf der neuen Oberfläche über http://<Server>:80/B2B-UI/ (ggf. auch hier neue Inkognito Sitzung verwenden)

Mandantentrennung

Die Konfiguration der Mandantentrennung ist hier beschrieben. Falls das Feature genutzt werden soll, muss die Extension TENANTS konfiguriert werden. Außerdem muss jedem User in Keycloak ein Attribute tenants zugewiesen werden.

Änderung des Keycloak Themes

Um bei der Anmeldung an der neuen UI nicht die Keycloak Anmeldemaske zu bekommen, macht es Sinn die Keycloak Seiten mit einem NLI Theme zu erweitern

  1. Unter https://nli-download.next-level-apps.com/PublicDL/B2B-UI/Keycloak-Erweiterungen/ die nlitheme.jar herunterladen
  2. Hinterlegen im keycloak Ordner unter standalone/deployments
  3. Konfiguration im realm: (Für jeden angelegten realm muss das Thema hinterlegt werden) unter Realm Settings > Themes muss bei LoginTheme und AccountTheme nli ausgewählt werden. Dann Internationalization Enabled auf On stellen und Save klicken.

Arbeitsvorräte

Zum Einsatz der neuen Arbeitsvorräte muss eine neue Extension konfiguriert werden. Hierbei unterstützt das Migration-Tool. Weitere Details entnehmen Sie bitte unserer neuen Doku zu den Arbeitsvorräten

Installation der Admin UI ohne Docker

Anforderung

Frontend-Anwendung starten

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass das Verzeichnis der Frontend-Anwendung B2B-Admin-UI ist. Bitte verwenden Sie die folgende nginx.conf-Vorlage:

server {
    listen <port number to be used>;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location /B2B-Admin-UI {
        alias  /usr/share/nginx/html/B2B-Admin-UI/;
        try_files $uri$args $uri$args/ /B2B-Admin-UI/index.html;
    }

    location /B2B-Admin-UI/portalConfig/ {
        proxy_pass   <Portal application url>/B2B-Portal-UI/assets/config/portal-config.json;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html/B2B-Admin-UI;
    }

    #proxy for rest api call
    location /B2B-Admin-UI/api/ {
            proxy_pass   <B2B application url>/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
    }

    location /B2B-Admin-UI/api/revisionmanager {
        proxy_pass   <Revision Manager backend application url>/revisionmanager;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }

    location /B2B-Admin-UI/api/b2b-user-messages/system-messages {
        proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}

Konfigurierbare NGINX-Eigenschaften

Eigenschaft Schlüssel Kommentar Beispiel
server.listen HTTP-Port des Servers. Der Benutzer kann mehrere Ports hinzufügen. 80
Portal proxy_pass URL der Portal-Frontend-Anwendung http://localhost:8080
B2B proxy_pass URL der B2B-Backend-Anwendung http://localhost:8080
B2B-UserMessages-Service proxy_pass URL des B2B-UserMessages-Services http://localhost:8080

Keycloak

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass das Verzeichnis der Frontend-Anwendung B2B-Admin-UI ist. Bitte verwenden Sie die folgende keycloak.json-Vorlage:

{
  "realm": "<keycloak realm>",
  "auth-server-url": "<keycloak auth server url>",
  "ssl-required": "none",
  "resource": "<keycloak client>",
  "public-client": true,
  "confidential-port": 0
}

Konfigurierbare Keycloak JSON

Eigenschaft Schlüssel Kommentar Beispiel
auth-server-url URL des Keycloak-Auth-Servers http://localhost:8080/auth
realm Keycloak-Realm b2b-qa
resource Keycloak-resource, bitte benutzen Sie “admin-ui” admin-ui

Ausführung

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass der Pfad der Frontend-Anwendung B2B-Admin-UI lautet.

Installation der Revision Info UI ohne Docker

Anforderung

Backend-Anwendung

Eigenschaften der Anwendung

Die Revision Info Backend-Anwendung liest die Eigenschaften aus der YAML-Datei. Der Benutzer kann die Datenbank- und Keycloak-Konfiguration in einer YML-Datei konfigurieren. Beispieldatei:

server:
  port: <server http port>

spring:
  main:
    allow-bean-definition-overriding: true
  jpa:
    hibernate:
      ddl-auto: validate
    database-platform: <target database>
  datasource:
    url: <database url>
    username: <database user name>
    password: <database user password>
    hikari:
      maximumPoolSize: <maximum pool size>

keycloak:
  enabled: true
  auth-server-url: <keycloak auth server url>
  realm: <keycloak realm>
  resource: <keycloak client>
  bearer-only: true
  public-client: false
  cors: true

Konfigurierbare Eigenschaften

Eigenschaft Schlüssel Kommentar Beispiel
server.port HTTP-Port des Servers 8080
spring.jpa.database-platform Name der Zieldatenbank, mit der gearbeitet werden soll org.hibernate.dialect.PostgreSQLDialect, etc. (https://docs.jboss.org/hibernate/orm/5.4/javadocs)
spring.datasource.url JDBC-URL der Datenbank jdbc:postgresql://localhost:5432/postgres
spring.datasource.username Login-Benutzername der Datenbank postgres
spring.datasource.password Passwort des Datenbank Benutzers postgres
spring.datasource.hikari.maximumPoolSize maximal genutzen Datenbankverbindungen 2
keycloak.auth-server-url URL des Keycloak-Auth-Servers http://localhost:8080/auth
keycloak.realm Keycloak-Realm b2b-qa
keycloak.resource Keycloak-resource, bitte benutzen Sie “revisionInfo-ui” revisionInfo-ui

Keycloak

Keycloak-Eigenschaften können in Konfigurierbare Eigenschaften konfiguriert werden.

Der Clientzugriffstyp in Keycloak muss auf vertraulich (confidential) eingestellt sein.

Backend Anwendung starten

Die ausführbare jar-Datei kann unter https://nli-download.next-level-apps.com/PublicDL/B2B-RevisionInfo/candidate gefunden/heruntergeladen werden. Bitte führen Sie folgendes Script aus, um die jar-Datei auszuführen:

#!/bin/sh

export JAVA_HOME="/opt/jdk1.8.0"
PATH="$PATH;$JAVA_HOME"

export CLASSPATH=".:ojdbc8.jar"
java $JAVA_OPTS org.springframework.boot.loader.JarLauncher

Als JAVA_HOME ist das entsprechende Verzeichnis zum JDK anzugeben. Im CLASSPATH ist weiterhin Ihr Datenbank JDBC Treiber anzugeben. In diesem Beispiel handelt es sich um einen Oracle Treiber.

B2B-Tomcat-Kompatibilität

Um sicherzustellen, dass die B2B-tomcat auf den neuen Microservice des Revision Managers zugreifen kann, aktualisieren Sie bitte die Konfigurationsdatei der B2B-tomcat wie folgt: ergänzen Sie an der CATALINA_OPTS in tomcat/bin/setenv.sh

-Drevision.info.server.url=<revision manager url>

Für die Windows-Version stellen Sie bitte eine der folgenden Optionen ein:

set CATALINA_OPTS=-Drevision.info.server.url=<revision manager url>

oder

set "CATALINA_OPTS=%CATALINA_OPTS% -Drevision.info.server.url=<revision manager url>"

Dieser B2B Workflow muss ebenso auf die keycloak.json zugreifen. Dafür muss der Classpath gemäß http://b2bbp.next-level-help.org/ui_keycloak_tomcat_adapter.html#classpath angepasst werden.

Frontend-Anwendung starten

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass das Verzeichnis der Frontend-Anwendung B2B-RevisionInfo-UI ist. Bitte verwenden Sie die folgende nginx.conf-Vorlage:

server {
    listen       <port number to be used>;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location /B2B-RevisionInfo-UI {
        alias  /usr/share/nginx/html/B2B-RevisionInfo-UI/;
        try_files $uri$args $uri$args/ /B2B-RevisionInfo-UI/index.html;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html/B2B-RevisionInfo-UI;
    }

    #proxy for rest api call
    location /B2B-RevisionInfo-UI/api/revisionmanager/ {
            proxy_pass   <Revision Manager backend application url>/revisionmanager/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
    }

    #proxy for rest api call
    location /B2B-RevisionInfo-UI/api / {
            proxy_pass   <B2B backend application url>/b2bbp-engine/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
    }

    location /B2B-RevisionInfo-UI/api/b2b-user-messages/system-messages {
        proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header        X-Real-IP $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header        X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}

Konfigurierbare NGINX-Eigenschaften

Eigenschaft Schlüssel Kommentar Beispiel
server.listen HTTP-Port des Servers. Der Benutzer kann mehrere Ports hinzufügen. 80
Revision Manager proxy_pass URL der Revision Manager-Backend-Anwendung http://localhost:8080
B2B proxy_pass URL der B2B-Backend-Anwendung http://localhost:8080
B2B-UserMessages-Service proxy_pass URL des B2B-UserMessages-Services http://localhost:8080

Keycloak

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass das Verzeichnis der Frontend-Anwendung B2B-RevisionInfo-UI ist. Bitte verwenden Sie die folgende keycloak.json-Vorlage:

{
  "realm": "<keycloak realm>",
  "auth-server-url": "<keycloak auth server url>",
  "ssl-required": "none",
  "resource": "<keycloak client>",
  "public-client": true,
  "confidential-port": 0
}

Konfigurierbare Keycloak JSON

Eigenschaft Schlüssel Kommentar Beispiel
auth-server-url URL des Keycloak-Auth-Servers http://localhost:8080/auth
realm Keycloak-Realm b2b-qa
resource Keycloak-resource, bitte benutzen Sie “revisionInfo-ui” revisionInfo-ui

Ausführung

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass der Pfad der Frontend-Anwendung B2B-RevisionInfo-UI lautet.

Installation des B2B-UserMessages ohne Docker

Anforderung

Backend-Anwendung

Eigenschaften der Anwendung

Der B2B-UserMessages-Service liest die Eigenschaften aus der YAML-Datei. Der Benutzer kann die Datenbank- und Keycloak-Konfiguration in einer YML-Datei konfigurieren. Beispieldatei:

server:
  port: <server http port>

spring:
  main:
    allow-bean-definition-overriding: true
  jpa:
    hibernate:
      ddl-auto: update
    database-platform: <target database>
  datasource:
    url: <database url>
    username: <database user name>
    password: <database user password>
    hikari:
      maximumPoolSize: <maximum pool size>

keycloak:
  enabled: true
  auth-server-url: <keycloak auth server url>
  realm: <keycloak realm>
  resource: <keycloak client>
  bearer-only: true
  public-client: false
  cors: true

Konfigurierbare Eigenschaften

Eigenschaft Schlüssel Kommentar Beispiel
server.port HTTP-Port des Servers 8080
spring.jpa.database-platform Name der Zieldatenbank, mit der gearbeitet werden soll org.hibernate.dialect.PostgreSQLDialect, etc. (https://docs.jboss.org/hibernate/orm/5.4/javadocs)
spring.datasource.url JDBC-URL der Datenbank jdbc:postgresql://localhost:5432/postgres
spring.datasource.username Login-Benutzername der Datenbank postgres
spring.datasource.password Passwort des Datenbank Benutzers postgres
spring.datasource.hikari.maximumPoolSize maximal genutzen Datenbankverbindungen 2
keycloak.auth-server-url URL des Keycloak-Auth-Servers http://localhost:8080/auth
keycloak.realm Keycloak-Realm b2b-qa
keycloak.resource Keycloak-resource, bitte benutzen Sie “b2b-usermessage” b2b-usermessage

Keycloak

Keycloak-Eigenschaften können in Konfigurierbare Eigenschaften konfiguriert werden.

Backend Anwendung starten

Die ausführbare jar-Datei kann unter https://nli-download.next-level-apps.com/PublicDL/B2B-UserMessages/candidate gefunden/heruntergeladen werden. Bitte führen Sie den folgenden Befehl aus, um die jar-Datei auszuführen:

java -jar <your dir>/<jar file>

Der Benutzer kann auch mit seinen eigenen Anwendungseigenschaften ausführen, indem er den folgenden Befehl ausführt:

java -jar <your dir>/<jar file> --spring.config.location=<application.yml path>

Frontend-Anwendung starten

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass das Verzeichnis der Frontend-Anwendung User-Message-UI ist. Bitte verwenden Sie die folgende nginx.conf-Vorlage:

server {
    listen       <port number to be used>;
    server_name  localhost;

    #charset koi8-r;

    #access_log  logs/host.access.log  main;

    location /User-Messages-UI {
        alias  /usr/share/nginx/html/User-Messages-UI/;
        try_files $uri$args $uri$args/ /User-Messages-UI/index.html;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html/User-Messages-UI;
    }

    #proxy for rest api call to message-service
    location /User-Messages-UI/api/b2b-user-messages/ {
            proxy_pass   <B2B-UserMessages-Service application url>/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
    }

    #proxy for rest api call to tomcat
    location /User-Messages-UI/api / {
            proxy_pass   <B2B backend application url>/b2bbp-engine/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
    }
}

Konfigurierbare NGINX-Eigenschaften

Eigenschaft Schlüssel Kommentar Beispiel
server.listen HTTP-Port des Servers. Der Benutzer kann mehrere Ports hinzufügen. 80
B2B-UserMessages-Service proxy_pass URL des B2B-UserMessages-Service http://localhost:8080
B2B proxy_pass URL der B2B-Backend-Anwendung http://localhost:8080

system.json

Mit der Datei system.json können weitere Einstellungen für jedes Frontend vorgenommen werden. Sie ist für jedes Frontend separat zu konfigurieren, enthält aber üblicherweise für jedes Frontend die gleiche Konfiguration.

In der Datei system.json können der angezeigte Systemname sowie die angezeigte Hintergrundfarbe festgelegt werden.

Ferner ist durch sie das Feature UserMessages zu aktivieren.

{
  "systemName": "B2B Dokusystem",
  "backgroundColor": "#008ECC",
  "activateUserMessages": true
}

Ähnlich wie die keycloak.json ist die system.json im Assets Ordner eines jeden Frontends hinterlegen. Beispielpfad für die B2B-UI:

/html/B2B-UI/assets/config/system.json

Keycloak

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass das Verzeichnis der Frontend-Anwendung User-Message-UI ist. Bitte verwenden Sie die folgende keycloak.json-Vorlage:

{
  "realm": "<keycloak realm>",
  "auth-server-url": "<keycloak auth server url>",
  "ssl-required": "none",
  "resource": "<keycloak client>",
  "public-client": true,
  "confidential-port": 0
}

Konfigurierbare Keycloak JSON

Eigenschaft Schlüssel Kommentar Beispiel
auth-server-url URL des Keycloak-Auth-Servers http://localhost:8080/auth
realm Keycloak-Realm b2b-qa
resource Keycloak-resource, bitte benutzen Sie “user-messages-ui” user-messages-ui

Ausführung

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass der Pfad der Frontend-Anwendung User-Message-UI lautet.

Die Datei system.json kann als globale Konfiguration genutzt werden. Nach Möglichkeit sollte die gleiche Datei für alle Frontends verwendet werden.

In ihr können der angezeigte Systemname sowie die angezeigte Hintergrundfarbe festgelegt werden.

Ferner kann durch sie das Feature UserMessages aktiviert werden.

{ “systemName”: “B2B Dokusystem”, “backgroundColor”: “#008ECC”, “activateUserMessages”: true }

Index Management (Einrichtung ohne Docker)

Anforderung

Backend-Anwendung

Eigenschaften der Anwendung

Die Backend-Anwendung liest die Eigenschaften aus der YAML-Datei. Der Benutzer kann die Datenbank- und Keycloak-Einstellungen in einer YAML-Datei konfigurieren. Die Eigenschaften sind unten dargestellt:

server:
  port: <server http port>

spring:
  main:
  allow-bean-definition-overriding: true

search-system:
  vendor: LUCENE2
  search-types:
    FULLTEXT: ../index/full
    ARCHIVE: ../index/arc
    CCM: ../index/ccm
    SYSTEMSPLIT_METERINGPOINT: ../index/custom_index/systemsplit_meteringpoint
    SYSTEMSPLIT_METERINGPOINTTEMP: ../index/custom_index/systemsplit_meteringpoint_temp
    SYSTEMSPLIT_RESPONSE: ../index/custom_index/systemsplit_answer

keycloak:
  enabled: true
  auth-server-url: <keycloak auth server url>
  realm: <keycloak realm>
  resource: <keycloak client>
  bearer-only: true
  public-client: false
  cors: true

Konfigurierbare Eigenschaften

Eigenschaft Kommentar Beispiel
server.port HTTP-Port des Servers 8080
keycloak.auth-server-url URL des Keycloak-Auth-Servers http://localhost:8080/auth
keycloak.realm Keycloak-Realm b2b-qa
keycloak.resource Keycloak-resource, bitte benutzen Sie “indexmanagement” indexmanagement
search-system.vendor Search system vendor. LUCENE2
search-system.search-types Search types. The key is the search type name; The value is the path of the index file. FULLTEXT: ../index/full

Migration der Extension SEARCH_LAYER_CONFIGURATION

Die Extension SEARCH_LAYER_CONFIGURATION wird in der neuen Backend-Anwendung nicht mehr verwendet. Bitte migrieren Sie die Extension, indem Sie der Struktur folgen:

search-system:
  vendor: <SEARCH_SYSTEM_VENDOR>
  search-types:
    <SEARCH_TYPE>: <SEARCH_TYPE_PATH>
    …
    <SEARCH_TYPE>: <SEARCH_TYPE_PATH>
Beispiel

Mit der folgenden Extension SEARCH_LAYER_CONFIGURATION:

SEARCH_SYSTEM_VENDOR=LUCENE2

SEARCH_TYPES=EXAMPLE1,EXAMPLE2

EXAMPLE1_PATH=../tomcat_all/index/example1
EXAMPLE2_PATH=../tomcat_all/index/example2

Die migrierten Anwendungseigenschaften werden wie unten dargestellt sein:

search-system:
  vendor: LUCENE2
  search-types:
    EXAMPLE1: ../tomcat_all/index/example1
    EXAMPLE2: ../tomcat_all/index/example2

Keycloak

Keycloak-Eigenschaften können entsprechend dem o.a. Beispiel konfiguriert werden.

Ausführungen

Die ausführbare jar-Datei kann unter https://nli-download.next-level-apps.com/PublicDL/IndexManagement/candidate/ gefunden und heruntergeladen werden. Bitte führen Sie den folgenden Befehl aus, um die jar-Datei auszuführen:

java -jar <your dir>/<jar file>

Der Benutzer kann auch mit seinen eigenen Anwendungseigenschaften ausführen, indem er den folgenden Befehl ausführt:

java -jar <your dir>/< jar file> --spring.config.location=< application.yml path>

Frontend-Anwendung

Siehe Installation einer neuen Benutzeroberfläche auf dem Webserver. Bitte beachten Sie, dass das Verzeichnis der Frontend-Anwendung B2B-Index-Management-UI ist. Bitte verwenden Sie die folgende nginx.conf-Vorlage:

server {
    listen        <port number to be used>;
    server_name localhost;

    #charset koi8-r;

    #access_log logs/host.access.log main;

    location/B2B-Index-Management-UI {
        alias  /usr/share/nginx/html/B2B-Index-Management-UI/;
        try_files $uri$args $uri$args/ /B2B-Index-Management-UI/index.html;
    }

    #error_page 404               /404.html;

    # redirect server error pages to the static page /50x.html
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html/B2B-Index-Management-UI;
    }

    #proxy for rest api call
    location /B2B-Index-Management-UI/api/indexmanagement/ {
            proxy_pass   <Index Management backend application url>;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
    }

    #proxy for rest api call
    location /B2B-Index-Management-UI/api/ {
            proxy_pass   <B2B backend application url>/b2bbp-engine/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
            proxy_read_timeout 360s;
            client_max_body_size 150M;
    }

    location /B2B-Index-Management-UI/api/b2b-user-messages/system-messages {
            proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
    }
}

Konfigurierbare NGINX-Eigenschaften

Eigenschaft Kommentar Beispiel
server.listen HTTP-Port des Servers. Der Benutzer kann mehrere Ports hinzufügen 80
Index Management proxy_pass URL der Index Management-Backend-Anwendung http://localhost:8080
B2B Proxy_Pass URL der B2B-Backend-Anwendung http://localhost:8080
B2B-UserMessages-Service proxy_pass URL des B2B-UserMessages-Services http://localhost:8080

Keycloak

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass das Verzeichnis der Frontend-Anwendung B2B-Index-Management-UI ist. Bitte verwenden Sie die folgende keycloak.json-Vorlage:

{
  "realm": "<keycloak realm>",
  "auth-server-url": "<keycloak auth server url>",
  "ssl-required": "none",
  "resource": "<keycloak client>",
  "public-client": true,
  "confidential-port": 0
}

Konfigurierbare Keycloak JSON

Eigenschaft Kommentar Beispiel
auth-server-url URL des Keycloak-Auth-Servers http://localhost:8080/auth
realm Keycloak-Realm b2b-qa
resource Keycloak-resource, bitte benutzen Sie “indexmanagement-ui” indexmanagement-ui

Ausführung

Siehe Installation neue UI im Webserver. Bitte beachten Sie, dass der Pfad der Frontend-Anwendung B2B-Index-Management-UI lautet.

Installation FSS UI

Die Anleitung für die FSS-UI finden Sie hier.

Portal-UI in Nginx installieren

Schritt 1: Konfiguration nginx.conf

  • Um die Portal-UI nutzten zu können muss zudem die nginx.conf angepasst werden. Fügen Sie dazu die folgende Konfiguration zur nginx.conf im Ordner nginx\conf hinzu:
          location /B2B-Portal-UI {
              alias  html/B2B-Portal-UI/;
              try_files $uri$args $uri$args/ /B2B-Portal-UI/index.html;
          }
    
          location /B2B-UI/portalConfig/ {
              proxy_pass   http://localhost:4040/B2B-Portal-UI/assets/config/portal-config.json;
          }
    
          location /B2B-Admin-UI/portalConfig/ {
              proxy_pass   http://localhost:4040/B2B-Portal-UI/assets/config/portal-config.json;
          }
    
          location /B2B-RevisionInfo-UI/portalConfig/ {
              proxy_pass   http://localhost:4040/B2B-Portal-UI/assets/config/portal-config.json;
          }
    
          location /B2B-Index-Management-UI/portalConfig/ {
              proxy_pass   http://localhost:4040/B2B-Portal-UI/assets/config/portal-config.json;
          }
    
          location /User-Messages-UI/portalConfig/ {
              proxy_pass   http://localhost:4040/B2B-Portal-UI/assets/config/portal-config.json;
          }
    
          location /B2B-Portal-UI/portalConfig/ {
              proxy_pass   http://localhost:4040/B2B-Portal-UI/assets/config/portal-config.json;
          }
    
          location /FSS-UI/portalConfig/ {
              proxy_pass   http://localhost:4040/B2B-Portal-UI/assets/config/portal-config.json;
          }
    
          #proxy for rest api call
          location /B2B-Portal-UI/api/ {
              proxy_pass   http://localhost:8080/b2bbp-engine/api/;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              proxy_set_header Host $host;
              proxy_set_header        X-Real-IP $remote_addr;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header        X-Forwarded-Proto $scheme;
              proxy_cache_bypass $http_upgrade;
              proxy_read_timeout 360s;
              client_max_body_size 300M;
          }
    
          location /B2B-Portal-UI/api/b2b-user-messages/system-messages {
              proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
              proxy_http_version 1.1;
              proxy_set_header Upgrade $http_upgrade;
              proxy_set_header Connection "upgrade";
              proxy_set_header Host $host;
              proxy_set_header        X-Real-IP $remote_addr;
              proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
              proxy_set_header        X-Forwarded-Proto $scheme;
              proxy_cache_bypass $http_upgrade;
          }
    

Schritt 2: Kopieren Sie B2B-Portal-UI-Daten in den Ordner nginx\html. In unserem Beispiel wurden die Datein in den Ordner “B2B-Portal-UI” unter dem Pfad nginx\html installiert.

Schritt 3: Legen Sie die Datei portal-config.json unter nginx\html\B2B-Portal-UI\assets\config ab. Kopieren Sie außerdem die keycloak.json mit Ihrer korrekten Konfiguration nach nginx\html\B2B-Portal-UI\assets\config

Beispiel: Konfiguration von keycloak.json

{
  "auth-server-url": "http://localhost:8070/auth",
  "realm": "b2b-qa"
}

Schritt 4: Legen sie den neuen Client “portal-ui” in Keycloack an und fügen sie passende Redirect URI und Web Origin hinzu.


Das Ergebnis nach der Anmeldung:

## Konfiguration für Portal-UI Die neue Portal-UI bietet eine grafische Oberfläche, aus der heraus ein einfacher Absprung in alle anderen neu geschaffenen UI’s möglich ist.
Damit es möglich wird aus der Portal-UI heraus in alle anderen verfügbaren UI’s abzuspringen müssen die Zugänge in der portal-config.json konfiguriert werden. Ein vollständige portal-config.json-Konfiguration kann wie folgt aussehen:

{
  "portalConfig": [
    {
      "uiUrl": "http://localhost:4040/B2B-UI",
      "uiRequiredRole": "B2B-Dashboard",
      "uiName": "portalConfig.uiName.b2b",
      "picturePath": "/B2B-Portal-UI/assets/config/images/p-b2b.jpg",
      "iconName": "/B2B-Portal-UI/assets/config/icons/B2b.svg",
      "description": "portalConfig.description.b2b"
    },
    {
      "uiUrl": "http://localhost:4040/FSS-UI/",
      "uiRequiredRole": "FSS-CertificateManager-Read",
      "uiName": "portalConfig.uiName.fss",
      "picturePath": "/B2B-Portal-UI/assets/config/images/p-security.jpg",
      "iconName": "/B2B-Portal-UI/assets/config/icons/SecurityServer.svg",
      "description": "portalConfig.description.fss"
    },
    {
      "uiUrl": "http://localhost:4040/User-Messages-UI/",
      "uiRequiredRole": "B2B-UserMessages-Write",
      "uiName": "portalConfig.uiName.userMessages",
      "picturePath": "/B2B-Portal-UI/assets/config/images/p-systemmessage.jpg",
      "iconName": "/B2B-Portal-UI/assets/config/icons/systemmessage.svg",
      "description": "portalConfig.description.userMessages"
    },
    {
      "uiUrl": "http://localhost:4040/B2B-RevisionInfo-UI/",
      "uiRequiredRole": "RevisionManager-Read",
      "uiName": "portalConfig.uiName.revisionManager",
      "picturePath": "/B2B-Portal-UI/assets/config/images/p-reversion-manager.jpg",
      "iconName": "/B2B-Portal-UI/assets/config/icons/reversionmanager.svg",
      "description": "portalConfig.description.revisionManager"
    },
    {
      "uiUrl": "http://localhost:4040/B2B-Admin-UI/",
      "uiRequiredRole": "B2BAdmin-Dashboard",
      "uiName": "portalConfig.uiName.admin",
      "picturePath": "/B2B-Portal-UI/assets/config/images/p-admin.jpg",
      "iconName": "/B2B-Portal-UI/assets/config/icons/administration.svg",
      "description": "portalConfig.description.admin"
    },
    {
      "uiUrl": "http://localhost:4040/B2B-Index-Management-UI/",
      "uiRequiredRole": "B2B-IndexManagement",
      "uiName": "portalConfig.uiName.indexManagement",
      "picturePath": "/B2B-Portal-UI/assets/config/images/p-indexmanagement.jpg",
      "iconName": "/B2B-Portal-UI/assets/config/icons/index-management.svg",
      "description": "portalConfig.description.indexManagement"
    },
    {
      "uiUrl": "http://localhost:4040/B2B-Portal-UI/",
      "uiRequiredRole": "B2BPortal-UI",
      "uiName": "portalConfig.uiName.portal",
      "picturePath": "/B2B-Portal-UI/assets/config/b2b-ui.jpg",
      "iconName": "dashboard",
      "description": "portalConfig.description.portal"
    }
  ]
}
  • Unter “uiUrl” werden die jeweiligen URL’s hinterlegt, unter denen die neuen Oberflächen erreichbar sind. Beispiel für B2B-UI: http://host.docker.internal:80/B2B-UI/.
  • Unter “uiRequiredRole” ist die jeweilige Rolle einzutragen, die benötigt wird, um auf die jeweilige UI-Anwendung zugreifen zu können. Diese Rolle muss in Keycloack vorhanden sowie dem jeweiligen Benutzer zugeordnet sein.
  • Unter “uiName” wird ein vordefinierter Wert angegeben, der nicht geändert werden sollte. Wenn Sie diesen Wert ändern möchten, müssen Sie den UI-Quellcode für (EN.json und DE.json) aktualisieren.
  • Unter “picturePath” und “iconName” werden die Pfade für die Bilder der Portal-UI Kacheln definiert. Auch diese Werte sollten aus dem Beispiel übernommen und nicht geändert werden. In unserem Beispiel wurde der Portal-Ui Microservice im Ordner /B2B-Portal-UI installiert.
  • Unter “description” werden die jeweiligen tooltips geladen. Auch diese Konfiguration sollte aus dem Beispiel übernommen werden

Metall Installation

Schritt 1: Kopieren Sie die folgende nginx.conf Vorlage

#user  nobody;
worker_processes  1;

#Changed from /var/run/nginx.pid due to using non-root user
pid /tmp/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #access_log  logs/access.log  timing;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       <port number to be used>;
        server_name  <server name to be used>;
        #client_max_body_size is to configure what is the maximum file size that the UI client can work for upload
        client_max_body_size 100M;
        absolute_redirect off;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /B2B-UI {
            alias  <ui application path>/B2B-UI/;
            try_files $uri$args $uri$args/ /B2B-UI/index.html;
        }

        location /B2B-Admin-UI {
            alias  <ui application path>/B2B-Admin-UI/;
            try_files $uri$args $uri$args/ /B2B-Admin-UI/index.html;
        }

        location /B2B-RevisionInfo-UI {
            alias  <ui application path>/B2B-RevisionInfo-UI/;
            try_files $uri$args $uri$args/ /B2B-RevisionInfo-UI/index.html;
        }

        location /B2B-Index-Management-UI {
            alias  <ui application path>/B2B-Index-Management-UI/;
            try_files $uri$args $uri$args/ /B2B-Index-Management-UI/index.html;
        }

        location /User-Messages-UI {
            alias  <ui application path>/User-Messages-UI/;
            try_files $uri$args $uri$args/ /User-Messages-UI/index.html;
        }

        location /B2B-Portal-UI {
            alias  <ui application path>/B2B-Portal-UI/;
            try_files $uri$args $uri$args/ /B2B-Portal-UI/index.html;
        }

        location /FSS-UI {
            alias  <ui application path>/FSS-UI/;
            try_files $uri$args $uri$args/ /FSS-UI/index.html;
        }

        location /B2B-UI/b2bNews/ {
            proxy_pass   https://b2bbp.next-level-help.org/feed.news.xml;
        }

        location /B2B-UI/portalConfig/ {
            proxy_pass   <Portal-UI frontend application url>/B2B-Portal-UI/assets/config/portal-config.json;
        }

        location /B2B-Admin-UI/portalConfig/ {
            proxy_pass   <Portal-UI frontend application url>/B2B-Portal-UI/assets/config/portal-config.json;
        }

        location /B2B-RevisionInfo-UI/portalConfig/ {
            proxy_pass   <Portal-UI frontend application url>/B2B-Portal-UI/assets/config/portal-config.json;
        }

        location /B2B-Index-Management-UI/portalConfig/ {
            proxy_pass   <Portal-UI frontend application url>/B2B-Portal-UI/assets/config/portal-config.json;
        }

        location /User-Messages-UI/portalConfig/ {
            proxy_pass   <Portal-UI frontend application url>/B2B-Portal-UI/assets/config/portal-config.json;
        }

        location /B2B-Portal-UI/portalConfig {
            alias  <ui application path>/B2B-Portal-UI/assets/config/portal-config.json;
        }

        location /FSS-UI/portalConfig/ {
            proxy_pass   <Portal-UI frontend application url>/B2B-Portal-UI/assets/config/portal-config.json;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html/B2B-UI;
        }

        #proxy for rest api call
        location /B2B-UI/api/ {
            proxy_pass   <B2B backend application url>/b2bbp-engine/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
            #proxy read timeout is the total connection time when client UI send request to backend server. E.g. upload a big size file, then it need more connection time to upload, so a long timeout is required.
            proxy_read_timeout 300s;
        }

        location /B2B-UI/api/b2b-user-messages/system-messages {
            proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        location /B2B-UI/api/revisionmanager {
            proxy_pass   <Revision Manager backend application url>/revisionmanager;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        #proxy for rest api call
        location /B2B-Admin-UI/api/ {
            proxy_pass   <B2B backend application url>/b2bbp-engine/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
            proxy_read_timeout 360s;
            client_max_body_size 150M;
        }

        location /B2B-Admin-UI/api/revisionmanager {
            proxy_pass   <Revision Manager backend application url>/revisionmanager;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        location /B2B-Admin-UI/api/b2b-user-messages/system-messages {
            proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        #proxy for rest api call
        location /B2B-RevisionInfo-UI/api/revisionmanager/ {
            proxy_pass   <Revision Manager backend application url>/revisionmanager/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        #proxy for rest api call
        location /B2B-RevisionInfo-UI/api/ {
            proxy_pass   <B2B backend application url>/b2bbp-engine/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        location /B2B-RevisionInfo-UI/api/b2b-user-messages/system-messages {
            proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        #proxy for rest api call
        location /B2B-Index-Management-UI/api/indexmanagement/ {
            proxy_pass   <Index Management backend application url>/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        #proxy for rest api call
        location /B2B-Index-Management-UI/api/ {
            proxy_pass   <B2B backend application url>/b2bbp-engine/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        location /B2B-Index-Management-UI/api/b2b-user-messages/system-messages {
            proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        #proxy for rest api call to b2b-tomcat
        location /User-Messages-UI/api/ {
            proxy_pass   <B2B backend application url>/b2bbp-engine/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        #proxy for rest api call to message-service
        location /User-Messages-UI/api/b2b-user-messages/system-messages {
            proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        #proxy for rest api call
        location /B2B-Portal-UI/api/ {
            proxy_pass   <B2B backend application url>/b2bbp-engine/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        location /B2B-Portal-UI/api/b2b-user-messages/system-messages {
            proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        #proxy for rest api call
        location /FSS-UI/api/ {
            proxy_pass   <FSS backend application url>/fss/api/;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
            #proxy read timeout is the total connection time when client UI send request to backend server. E.g. upload a big size file, then it need more connection time to upload, so a long timeout is required.
            proxy_read_timeout 60s;
        }

        location /FSS-UI/api/b2b-user-messages/system-messages {
            proxy_pass   <B2B-UserMessages-Service application url>/system-messages;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }

        location /FSS-UI/api/b2b-revision/revisionmanager {
            proxy_pass   <Revision Manager backend application url>/revisionmanager;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $host;
            proxy_set_header        X-Real-IP $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_cache_bypass $http_upgrade;
        }
    }
}

Schritt 2: Ersetzen Sie die folgenden Platzhalter

Eigenschaft Kommentar Beispiel
ui application path UI application path /usr/share/nginx/html
port number to be used HTTP-Port des Servers 8080
server name to be used Servername localhost
Portal-UI frontend application url URL der Portal UI-Frontend-Anwendung localhost:8080
B2B backend application url URL der B2B-Backend-Anwendung localhost:8080
B2B-UserMessages-Service application url URL der UserMessages-Backend-Anwendung localhost:8080
Revision Manager backend application url URL der Revision Manager-Backend-Anwendung localhost:8080
Index Management backend application url URL der Index Management-Backend-Anwendung localhost:8080
FSS backend application url URL der FSS-Backend-Anwendung localhost:2222
View Me   Edit Me