Das von uns bereitgestellte Migrationstool unterstützt bei der Migration der Daten von der alten UI zur neuen UI. Zu den Aufgaben gehören:
- User Migration
- Rollen anlegen
- Mandanten Migration
- Migration der B2B-Arbeitsvorräte
User Migration
Dieser Abschnitt behandelt die Migration der User aus der B2B-Datenbank nach Keycloak.
Sie könnten alternativ selbständig neue User in Keycloak anlegen.
Sie könnten alternativ auch direkt ein LDAP an Keycloak anbinden.
Migration der B2B-Benutzer nach keycloak
Eine Migration der B2B-Nutzer (der Remote-B2B) ist möglich. Mithilfe eines Migrationstools können die in der Remote-B2B enthaltenen Benutzer in die Keycloak-Instanz überführt werden. Eine Übernahme der Passwörter ist ab Oktober 2020 (Ticket NUI-785) möglich. Ab NUI-519 (vorraussichtlich ab Oktober 2020) kann mit Hilfe des Migrationstools allen migrierten Nutzern eine selbst-definierbare Standardgruppe von Rollen zugewiesen werden. Die Rollen & Gruppen können dannach für jeden User einzeln in Keycloak konfiguriert werden.
Die aktuelle Dokumentation des Migrationstools finden sie hier
Migration der Benutzer
Die Migration der Benutzer von der Remote-B2B in den Keycloak erfolgt mithilfe eines Migrationstools. Dieses Migrationstool ist eine Java-Konsolen-Anwendung und wird als Jar-Datei ausgeliefert. Neben der Jar-Datei wird eine Konfigurationsdatei (application.yml) benötigt. Diese Konfigurationsdatei beinhaltet alle Einstellungen, um sowohl auf die Remote-B2B-Datenbank als auch die keycloak-Instanz zuzugreifen.
Im Folgenden ist die Konfigurationsdatei abgebildet:
spring:
main:
banner-mode: off
keycloak:
serverUrl: http://[Docker-Host]:8080/auth/
realm: B2B
username: migration-user
password: [Passwort des migration-user]
clientId: admin-cli
database:
driver: oracle.jdbc.OracleDriver
url: jdbc:oracle:thin:@[Remote-B2B-Datenbank Host]:[Remote-B2B-Datenbank Port]:[Remote-B2B-Datenbank Name]
username: [Datenbank User]
password: [Datenbank Passwort]
= b2bbp_adm_account_date_range.userid
selectTableSql: SELECT * FROM b2bbp_adm_account
# basicColumns are columns from db, where it must be provided and migrate to keycloak
basicColumns: username:userid;firstname:firstname;lastname:lastname;email:email;
# attributesColumns are columns from db, where is not necessary to be provided for keycloak user attribute
attributeColumns: organization;password
# attributeColumns:
ssh:
# if database require SSH connection, then enable must be true
enable: false
# provide ldap username and password for ssh connection
username: Ldap account
password: Ldap password
host: Ssh server
port: 22
remoteDbServer: Remote Database server name
# Remote database server port number
remoteDbPort: 5413
# local db port must same as above database url port, else connection will fail
localDbPort: 5437
output:
filePath: b2b_migration_result.txt
Um das Migrationstool auszuführen, ist zunächst eine Verzeichnisstruktur zu erstellen. Für diese Dokumentation erfolgt dies mit diesen Kommandos:
:> mkdir -p /opt/b2b/nui/migration/config
:> mkdir -p /opt/b2b/nui/migration/lib
Anschließend sind sowohl die Jar-Datei des Migrationstools als auch der JDBC-Datenbanktreiber (siehe hier) in das Verzeichnis /opt/b2b/nui/migration/lib
zu kopieren.
Die oben aufgeführte application.yml ist in das Verzeichnis /opt/b2b/nui/migration/config
zu kopieren bzw. anzulegen.
Die Ausführung des Migrationstools erfolgt mit dem folgenden Kommando:
:/opt/b2b/nui/migration> java -cp './config/:./lib/' org.springframework.boot.loader.JarLauncher
Nach der Ausführung dieses Kommandos ist die im Folgenden dargestellte Nutzereingabe mit “1” zu beantworten:
...
1 - Database user migration to keycloak
2 - Worklist definition migration
1
Sofern die Migration erfolgreich durchgeführt wurde, erscheint die folgende beispielhafte Ausgabe:
2020-08-28 08:42:43.951 INFO 1816 --- [ main] c.n.b.migration.tool.impl.UserMigration : Executing select statement 'SELECT * FROM b2bbp_adm_account'
2020-08-28 08:42:43.995 INFO 1816 --- [ main] c.n.b.migration.tool.impl.UserMigration : Total records need to migrate to keycloak : 2
2020-08-28 08:42:43.995 INFO 1816 --- [ main] c.n.b.migration.tool.impl.UserMigration : Migrating data from database to keycloak...
2020-08-28 08:42:44.515 INFO 1816 --- [ main] c.n.b.migration.tool.impl.UserMigration : Total records migrated to keycloak: 2 , details of migration error can refer to b2b_migration_result.txt
2020-08-28 08:42:44.515 INFO 1816 --- [ main] c.n.b.m.t.MigrationConsoleApplication : -----------------------MIGRATION FINISHED-----------------------
Diese Ausgabe gibt Auskunft über den Verlauf der Migration und die Anzahl migrierten Benutzern.
manuelle Anpassung der Benutzer nach der Migration
Nachdem die oben beschriebene Benutzermigration durchgeführt wurde, müssen nun die Benutzer im Keycloak sowohl mit den entsprechenden Rollen versehen als auch ihr initiales Passwort vergeben werden. Beide Schritte sind manuell über die Keycloak-Administrationskonsole vorzunehmen.
Die Zuweisung der Rollen erfolgt nach der Auswahl des Benutzers, wie im Kapitel Users dokumentiert. Welche Rolle die einzelnen Benutzer erhalten obliegt dem durchführenden Administrator.
Da während der Benutzermigration den einzelnen Benutzer keine Passwörter zugewiesen wurden, ist dies nun manuell für jeden Benutzer wie folgt nachzuholen. Dabei wird jedem Benutzer ein initiales Passwort vergeben (z.B. [Vorname]-[Nachname]) und der Account wird mit der Aktion zum Zurücksetzen des Passwortes bei erstmaligem Login versehen.
Zunächst ist der Benutzer nach der Anmeldung an der Keycloak-Administrationskonsole zu öffnen:
Nachdem (wie oben erwähnt) die Rollen zugewiesen wurden, ist über “Details” und “Credentials” das initiale Passwort und die Aktion zum Zurücksetzen des Passwortes bei erstmaligem Login zu vergeben:
Nachdem die hier beschriebenen Anpassungen vorgenommen wurden, können sich die Benutzer bei der B2B-New-UI anmelden und werden nach dem ersten Login zum Zurücksetzen ihres Passwortes aufgefordert.
Mandantenmigration
Die Mandantenmigration ist hier beschrieben.
Migration der Arbeitsvorräte
Die Migration der Arbeitsvorräte ist hier beschrieben.
View Me Edit Me