Produktivdatenbank in ein Testsystem übernehmen (Anmeldung als sadmin)
Diese Seite beschreibt, was zu tun ist, wenn die Datenbank eines Produktivsystems in ein bestehendes Test- oder Integrationssystem (im Folgenden „Testsystem“) übernommen wird und man sich danach wieder als Systemadministrator sadmin anmelden möchte. Sie gilt ab Webdesk 4.56 und richtet sich an Systemadministratoren und Berater. Grundlagen zur Konfigurationsdatei und zum Schlüssel finden Sie in Konfigurationsdatei webdesk.properties und Umgebungsvariablen.
Warum die Anmeldung nach der Übernahme scheitert
Webdesk verschlüsselt Passwörter, die in der Datenbank gespeichert sind, mit einem Schlüssel (AES-256). Dazu gehört auch das Passwort von sadmin: Es ist kein gewöhnlicher Benutzer, sondern ein verschlüsselt gespeicherter Systemparameter. Bei jeder Anmeldung entschlüsselt Webdesk den gespeicherten Wert und vergleicht ihn mit dem eingegebenen Passwort.
Der Schlüssel liegt aber nicht in der Datenbank, sondern bei der Installation: im Eintrag webdesk.encryption.key der Datei webdesk.properties oder in der Datei enc.key. Das Testsystem hat seinen eigenen Schlüssel. Nach der Übernahme enthält die Datenbank Werte, die mit dem Schlüssel des Produktivsystems verschlüsselt wurden, das Testsystem entschlüsselt sie aber weiter mit seinem eigenen Schlüssel:
Produktivsystem: Datenbank (verschlüsselt mit Schlüssel P) + webdesk.properties mit Schlüssel P
Testsystem: Datenbank übernommen (Schlüssel P) + webdesk.properties mit Schlüssel T
→ Entschlüsseln mit T schlägt fehl
Folgen:
- Die Anmeldung als
sadminscheitert, auch mit dem richtigen (produktiven) Passwort. Im Log steht eine Meldung mitjavax.crypto.AEADBadTagException: Tag mismatch. - Alle anderen verschlüsselt gespeicherten Passwörter aus der Produktivdatenbank sind im Testsystem ebenfalls unlesbar, z. B. von Konnektoren, Repositories der Dokumentenverwaltung oder Groupware-Zugriffen.
Die Lösung ist, dem Testsystem den Schlüssel des Produktivsystems zu geben.
Vor dem ersten Start: Produktivkonfiguration beachten
Achtung: Mit der Produktivdatenbank übernimmt das Testsystem auch die Konfiguration des Produktivsystems, z. B. Zeiterfassungs-Anbindungen, Konnektoren, E-Mail-Versand und geplante Jobs. Sobald die Passwörter wieder entschlüsselt werden können, kann das Testsystem auf produktive Umsysteme zugreifen, Daten schreiben oder E-Mails versenden. Prüfen und deaktivieren bzw. umstellen Sie diese Einstellungen, bevor Sie das Testsystem mit dem Produktivschlüssel in Betrieb nehmen.
Hinweis: Mit dem Produktivschlüssel kann das Testsystem alle verschlüsselten Produktivdaten lesen. Schützen Sie die Konfiguration des Testsystems danach genauso wie die des Produktivsystems.
Anmeldung über Reverse Proxy (SSO per HTTP-Header)
Viele Installationen melden die Benutzer über einen Reverse Proxy an, der den Benutzernamen in einem HTTP-Header an Webdesk übergibt (Systemparameter AuthenticationOptions.ssoHeaderNameRemoteUser, Standard X-Remote-User). Webdesk übernimmt den Header aber nur für Anfragen, deren URL mit dem Systemparameter AuthenticationOptions.ssoHeaderAuthenticationValidationUrl beginnt, z. B. https://<prod-host>/webdesk/.
Diese Systemparameter stehen in der Datenbank und werden bei der Übernahme mitkopiert. Im Testsystem passt die Prüf-URL des Produktivsystems dann nicht zur Adresse des Testsystems. Folge: Bei jeder Anfrage mit dem Header scheitert die automatische Anmeldung mit einer java.lang.NullPointerException in AuthenticationUtils.getNormalizedUser, jedes Mal mit vollständigem Stacktrace im Log und in catalina.out. Die Log-Dateien wachsen dadurch schnell, bis das Laufwerk voll ist und der Server ausfällt. Ein niedrigeres Log-Level verhindert das nicht.
Betroffene Versionen: Der Fehler ist mit WD-23236 behoben, voraussichtlich ab Webdesk 4.63.35 und 4.65.3 sowie in allen späteren Versionen. Betroffen sind alle älteren Versionen, also 4.63 bis 4.63.34, 4.65 bis 4.65.2, die gesamte Version 4.64 und alle Versionen vor 4.63 (z. B. 4.59). Prüfen Sie die tatsächliche Version mit den Release Notes.
- Betroffene Versionen: Die Prüf-URL muss vor dem ersten Start in der Datenbank geändert werden, wie unten beschrieben.
-
Versionen mit Fehlerbehebung: Ein Header außerhalb der Prüf-URL wird ignoriert, und es erscheint die normale Anmeldemaske. Im Log steht einmalig eine Warnung mit dem Namen des Headers und der erwarteten URL. SSO funktioniert im Testsystem erst wieder, wenn die Prüf-URL angepasst ist; das geht dann nach der Anmeldung als
sadminin der Maske „Systemparameter“, ohne Eingriff in die Datenbank.
Bei betroffenen Versionen ändern Sie die Prüf-URL daher vor dem ersten Start des Testsystems auf dessen Adresse. Da eine Anmeldung zu diesem Zeitpunkt noch nicht möglich ist, geschieht das direkt in der Datenbank des Testsystems, bei gestopptem Webdesk und nach einer Sicherung der Tabellen PoBeanProperty und PoBeanPropertyValue:
SELECT p.propertyName, v.property
FROM PoBeanProperty p JOIN PoBeanPropertyValue v ON v.BEAN_UID = p.BEAN_UID
WHERE p.beanName = 'AuthenticationOptions'
AND p.propertyName IN ('authenticationMode', 'ssoHeaderNameRemoteUser', 'ssoHeaderAuthenticationValidationUrl');
UPDATE PoBeanPropertyValue SET property = 'https://<test-host>/webdesk/'
WHERE BEAN_UID = (SELECT BEAN_UID FROM PoBeanProperty
WHERE beanName = 'AuthenticationOptions'
AND propertyName = 'ssoHeaderAuthenticationValidationUrl');
- Geben Sie die Adresse so an, wie Webdesk die Anfragen sieht, in derselben Form wie im Produktivsystem (Protokoll, Rechnername, Pfad).
- Soll das Testsystem kein SSO verwenden, setzen Sie stattdessen
authenticationModeaufDB. - Ein Eintrag in
webdesk.propertiesreicht nicht: Beim Start haben die Werte aus der Datenbank Vorrang. - Sobald die Anmeldung wieder funktioniert, kann der Wert in der Maske „Systemparameter“ gepflegt werden.
Ist das Testsystem bereits mit der falschen Prüf-URL gestartet: Webdesk stoppen, den Reverse Proxy vorübergehend keinen Header senden lassen (oder Webdesk direkt ohne Proxy aufrufen), Log-Dateien entfernen, um wieder Platz zu schaffen, und dann die Prüf-URL wie oben ändern.
Vorgehen
- Webdesk im Testsystem stoppen (bei mehreren Knoten alle Knoten).
- Sicherung der Datei
webdesk.propertiesdes Testsystems anlegen (und vonenc.key, falls vorhanden). -
Schlüssel des Produktivsystems ermitteln. In der
webdesk.propertiesdes Produktivsystems steht unterwebdesk.encryption.key.source, wo der Schlüssel liegt:-
webdesk_properties: Der Schlüssel ist der Wert vonwebdesk.encryption.keyin derselben Datei. -
file: Der Schlüssel steht in der Dateienc.keynebenwebdesk.properties.
-
-
Schlüssel im Testsystem eintragen, auf eine der beiden Arten:
webdesk.encryption.key.source = webdesk_properties webdesk.encryption.key = <Schlüssel des Produktivsystems>
oderenc.keydurch die Datei des Produktivsystems ersetzen undwebdesk.encryption.key.source = filesetzen (der Eintragwebdesk.encryption.keyentfällt dann). Bei mehreren Knoten auf jedem Knoten. -
Zugangsdaten der Datenbank neu verschlüsseln. Benutzername und Passwort der Testdatenbank in
webdesk.propertiessind mit dem bisherigen Schlüssel des Testsystems verschlüsselt und passen nach dem Schlüsselwechsel nicht mehr. Ohne diesen Schritt kann sich das Testsystem nicht mehr mit seiner Datenbank verbinden. Den Schritt brauchen Sie nur, wennwebdesk.credentials.encrypted = truegesetzt ist; beifalse(Klartext) oder beim alten Eintragwebdesk.connection.encryptedhängen die Werte nicht vom Schlüssel ab. Zwei Möglichkeiten:-
Webdesk verschlüsselt beim Start (empfohlen): Benutzernamen und Passwörter der Webdesk- und der Shark-Datenbank im Klartext eintragen und die Zeilen
webdesk.credentials.encryptedundshark.credentials.encryptedlöschen (nicht auffalsesetzen):webdesk.connection.username = <Datenbank-Benutzer> webdesk.connection.password = <Datenbank-Passwort> shark.connection.username = <Datenbank-Benutzer> shark.connection.password = <Datenbank-Passwort>
Beim nächsten Start verschlüsselt Webdesk die Werte mit dem neuen Schlüssel, trägt die Einträge...credentials.encrypted = truewieder ein und speichert die Datei. Der Benutzer, unter dem Webdesk läuft, braucht dafür Schreibrechte auf die Datei. Beifalsewürde Webdesk die Werte als gewollten Klartext stehen lassen. -
Mit dem Werkzeug: Auf Windows-Installationen
manageWebdeskDBProps.batim Verzeichnisbinvon Tomcat starten, „Basic“-Modus wählen und im Menü die Option zur Eingabe neuer Werte verwenden. Das Werkzeug verschlüsselt die eingegebenen Werte mit dem Schlüssel aus der Datei. Verwenden Sie dafür nicht die ParameterwebdeskLogin=/webdeskPassword=des „Expert“-Modus: Bei bereits verschlüsselten Dateien werden sie unverschlüsselt gespeichert. Das Werkzeug unterstützt nurwebdesk.encryption.key.source = webdesk_properties.
-
Webdesk verschlüsselt beim Start (empfohlen): Benutzernamen und Passwörter der Webdesk- und der Shark-Datenbank im Klartext eintragen und die Zeilen
-
Bei SSO über einen Reverse Proxy: Bei betroffenen Versionen die Prüf-URL
ssoHeaderAuthenticationValidationUrljetzt in der Datenbank auf die Adresse des Testsystems ändern; bei Versionen mit Fehlerbehebung kann das nach der Anmeldung in der Maske „Systemparameter“ geschehen (siehe Abschnitt „Anmeldung über Reverse Proxy“). - Webdesk starten. Prüfen, dass das System startet, und dass in
webdesk.propertiesdie Zugangsdaten wieder verschlüsselt (als Base64-Text) stehen. - Als
sadminmit dem Passwort des Produktivsystems anmelden. - Die geänderte
webdesk.properties(bzw.enc.key) des Testsystems neu sichern.
Fehlersuche
-
Das Log füllt sich mit
java.lang.NullPointerExceptioninAuthenticationUtils.getNormalizedUser, bis das Laufwerk voll ist: Die Prüf-URL für die Anmeldung per Reverse-Proxy-Header ist noch die des Produktivsystems, und die Version enthält die Fehlerbehebung noch nicht (siehe Abschnitt „Anmeldung über Reverse Proxy“). -
Im Testsystem erscheint die Anmeldemaske statt der automatischen SSO-Anmeldung, im Log steht „SSO header ... is ignored“: Version mit Fehlerbehebung, die Prüf-URL ist noch die des Produktivsystems. Als
sadminanmelden undssoHeaderAuthenticationValidationUrlin der Maske „Systemparameter“ auf die Adresse des Testsystems ändern. - Testsystem startet nach dem Schlüsselwechsel nicht, Datenbankverbindung schlägt fehl: Die Zugangsdaten der Datenbank sind noch mit dem alten Schlüssel des Testsystems verschlüsselt (Schritt 5).
-
Anmeldung als
sadminscheitert weiterhin, im Log stehtAEADBadTagException: Das Testsystem verwendet nicht den Schlüssel des Produktivsystems. Prüfen Sie Schlüsselquelle und Schlüssel bzw.enc.keyauf allen Knoten. -
Die Zugangsdaten stehen nach dem Start weiterhin im Klartext in der Datei: Webdesk konnte die Datei nicht schreiben (Schreibrechte), oder die Zeilen
...credentials.encryptedstehen noch mitfalsein der Datei. -
Der Schlüssel des Produktivsystems ist nicht mehr auffindbar: Die verschlüsselten Werte aus der Produktivdatenbank, einschließlich des
sadmin-Passworts, lassen sich dann nicht wiederherstellen. Wenden Sie sich an den Webdesk-Support.
Keine Kommentare vorhanden.