fb
Nachrichten 5 Minuten

Massenimport von Benutzern in einem sekundären Benutzerspeicher in WSO2 IS 5.7.0

Rob Blaauboer
Rob Blaauboer
Integration Consultant & WSO2 Trainer
Bulk Import Secondary User Store WSO2 Identity Server 5.7.0 scaled 1
Scrollen

Die aktuelle Version von WSO2 Identity Server, sowie der WSO2 Enterprise Integrator und WSO2 API Manager verstehen das Konzept des primären Benutzerspeichers und einer Reihe von sekundären Benutzerspeichern. Allerdings verwenden nicht alle Produkte den Benutzerspeicher gleichermaßen. Beim Enterprise Integrator gibt es eine begrenzte Anzahl von Claims, die er in der Datenbank speichern wird. Das liegt daran, dass für den WSO2 Enterprise Integrator der Benutzer relativ sekundär ist, sein Zweck ist die Nachrichtenvermittlung und -transformation. Der WSO2 Identity Server beschäftigt sich ausschließlich mit dem Identitäts- und Zugriffsmanagement und hat die Möglichkeit, zusätzliche Claims zu den Standarddialekten hinzuzufügen.

So werden Daten gespeichert

Die Daten werden standardmäßig in einer Datenbank gespeichert. Meist ist dies H2, eine Flat-File-Datenbank. Nur der Identitätsserver verwendet ein eingebettetes LDAP. Da LDAPs etwas umständlicher zu durchsuchen sind, zeigen wir die Struktur anhand von DBeaver, einem SQL-Client, den wir schon früher verwendet haben. In diesem Blog können Sie mehr über DBeaver erfahren.

Ein schnelles Setup

Wenn Sie einen sekundären Benutzerspeicher erstellen möchten, ist es am einfachsten, MySQL / MariaDB zu verwenden. Das ist ein leichtgewichtiger und performanter Benutzerspeicher. Außerdem ist es die bevorzugte Datenbank für unsere Trainingsinstanzen. Achten Sie darauf, dass Sie entweder MySQL oder MariaDB installiert haben. Im Internet finden Sie einfache Anleitungen wie diese für MariaDB auf Centos 7.

Die MariaDB-Umgebung wird in der Trainingsinstanz installiert. Verbinden Sie sich mit MySQL über die Befehlszeilenschnittstelle. Das Kommando zum Verbinden mit der MySql-Eingabeaufforderung lautet:

 mysql -u root -proot

WSO2 IS 5.7.0 - mysql -u root -proot

Erstellen Sie eine Datenbank innerhalb von MySQL, um den Benutzerspeicher aufzunehmen. Der MySQL-Befehl zum Erstellen der Datenbank lautet wie folgt:

create database YENLO_USERSTORE;

Wählen Sie die neue Datenbank mit dem Befehl

use YENLO_USERSTORE;.

Wir ändern das Skript, das die Tabellen für MariaDB/Mysql erstellt, das sich unter [IS_Home]/dbscripts/mysql.sql befindet. Der Grund dafür ist, dass das Skript sowohl Registry- als auch User-Tabellen anlegt. Das ist das Standardverhalten, da die Skripte auch zum (Neu-)Anlegen des primären Benutzerspeichers verwendet werden.

Öffnen Sie die Datei mysql.sql mit einem Texteditor und suchen Sie nach USER MANAGER TABLES. Entfernen Sie alle REG-Definitionen und speichern Sie die Datei als mysql_um.sql.

Führen Sie den folgenden Befehl aus:

Source [IS-HOME]/dbscripts/mysql_um.sql

WSO2 IS 5.7.0 - [IS-HOME]dbscriptsmysql_um.sql

Überprüfen Sie die mit den Show-Tabellen erstellten Tabellen; Befehl:

MariaDB [YENLO_USERSTORE]> show tables;
+---------------------------+
| Tables_in_YENLO_USERSTORE |
+---------------------------+
| UM_ACCOUNT_MAPPING        |
| UM_CLAIM                  |
| UM_CLAIM_BEHAVIOR         |
| UM_DIALECT                |
| UM_DOMAIN                 |
| UM_HYBRID_REMEMBER_ME     |
| UM_HYBRID_ROLE            |
| UM_HYBRID_USER_ROLE       |
| UM_MODULE                 |
|  [more tables}

Um die Beziehungen zu sehen, starten Sie DBeaver und stellen eine neue Verbindung zu MariaDB her.

DBeaver - MariaDB - WSO2 IS 5.7.0

Klicken Sie auf Weiter, bis die Verbindung beendet ist. Öffnen Sie die Verbindung zeigen die Tabellen im YENLO_USERSTORE

Yenlo UserStore - WSO2 IS 5.7.0

Wählen Sie UM_USER und klicken Sie auf ER-Diagramm. Sie erhalten die UM_USER und die UM_USER_ATTRIBUTE. Die Benutzerattribut-Tabelle ist der Ort, an dem die USER_Values gespeichert werden. Dies erlaubt Flexibilität, da es nicht eine vordefinierte Anzahl von Feldern gibt, sondern eine Beziehung mit einem Attributnamen und einem Attributwert.

Database Navigator Yenlo UserStore - WSO2 IS 5.7.0

JDBC-Verbindung aktivieren

WENN wir eine MySQL-Datenbank in IS verwenden wollen, dann müssen wir die JDBC-Connector jar-Datei nach [IS_HOME]/repository/components/lib kopieren. Die Connector-Datei kann von dieser Stelle heruntergeladen werden.

Führen Sie einen Neustart des Identity Servers mit dem Parameter -DosgiConsole durch. Damit wird die OSGI-Konsole geladen, über die Sie sehen können, ob das mysql jar geladen ist. Wenn ein System gestartet ist (die Management-URL wird angezeigt), drücken Sie im Terminal die Eingabetaste.

[wso2student@ip-172-31-44-127 bin]$ sh wso2server.sh -DosgiConsole

Sie erkennen einen blinkenden Cursor. Wenn das Produkt gestartet wird, betätigen Sie die Eingabetaste und geben Sie ein:

lb mysql
osgi> osgi> START LEVEL 4
ID|State      |Level|Name
90|Active     |    4|mysql_connector_java_5.1.39_bin (1.0.0)

Für Windows ist der Befehl ähnlich und muss im Befehlsfenster oder in der Powershell eingegeben werden (in [IS-HOME]/bin: wso2server.bat -DosgiConsole

Hier wird der mysql-Connector als Bundle in IS geladen.

Konfigurieren Sie einen sekundären Benutzerspeicher

Melden Sie sich in der Management-Oberfläche von Identity Server an (z.B. https://localhost:9443/carbon) und klicken Sie Main > User Stores > Add.

User Stores - WSO2 IS 5.7.0

Die Seite Neuen Benutzerspeicher hinzufügen wird geöffnet.

Hinweis: Sie können den PRIMARY-Benutzerspeicher zur Laufzeit nicht aktualisieren, da dieser bereits verwendet wird.

  1. Wählen Sie wso2.carbon.user.core.jdbc.JDBCUserStoreManager aus der Dropdown-Liste User Store Manager Class.
  2. Tragen Sie Training als Domänennamen ein.

Add New User Store - WSO2 IS 5.7.0

Geben Sie in den Eigenschaften die folgenden Werte ein

jdbc:mysql://localhost:3306/YENLO_USERSTORE
root
root
com.mysql.jdbc.Driver

WSO2 Carbon - WSO2 IS 5.7.0

Klicken Sie auf Verbindung testen, um zu testen, ob die Verbindung funktioniert.
Klicken Sie auf Hinzufügen, um die Verbindung hinzuzufügen.
Laden Sie die Seite neu, um den neu hinzugefügten Benutzerspeicher zu sehen.

User Stores - carbon user core

Jetzt sollte es möglich sein, neue Benutzer und Rollen in den Benutzerspeicher aufzunehmen. Fügen Sie aMArvin zum Benutzerspeicher hinzu.

Add New User - Enter Username and Password

Bearbeiten Sie anschließend sein Benutzerprofil

Users - User profile - WSO2 IS 5.7.0

Bearbeiten Sie die Pflichtfelder und klicken Sie auf Aktualisieren.

Update Profile - Yenlo User Store _WSO2 IS 5.7.0

Alle neuen Benutzer und Rollen, die dem Benutzerspeicher hinzugefügt werden, sollten in der MySQL-Datenbank erscheinen. Diese Werte befinden sich in dem YENLO_USERSTORE UM_USER_ATTRIBUTE in einer 1:N-Beziehung.

UM_User_Attribute - WSO2 IS 5.7.0

Massenimport

Der WSO2 Identity Server bietet die Möglichkeit, einen Massenimport von Benutzern durchzuführen. Dies erfolgt mit einer Excel-Datei (xls), die entweder über die Management-Benutzeroberfläche oder über die Admin-Dienste hochgeladen wird.

Wählen Sie in den erweiterten Eigenschaften des von Ihnen erstellten Benutzerspeichers den Wert Ist Bulk-Import unterstützt. Klicken Sie auf Aktualisieren, um die Änderung zu speichern.

Advanced Properties User store - WSO2 IS 5.7.0

Wir werden nun 4 Benutzer aus einer Excel-Datei (CSV-Format) hochladen. Laden Sie die bulkload.csv von bit.ly/WSO2GREGSAMPLES herunter (gehen Sie zum Verzeichnis IS570).

UserName , Password
JohnDoe , jdoepw
JaneDoe , pwjdoe
JackDoe , jpwdoe
JillDoe , zaq1@WSX

Search Users - Yenlo User Store - WSO2 IS 5.7.0

Es gibt ein Limit von etwa 500.000 Benutzern pro CSV-Datei.

Sie sehen also, dass Sie problemlos Benutzer zusammen mit Claims in großen Mengen in den WSO2 Identity Server importieren können. Sie können das sogar programmgesteuert über die Admin Services tun. Wie wir schon sagten: Es gibt immer einen anderen Weg, es mit WSO2 zu tun.  Falls Sie Fragen zu diesem Blog oder zu anderen WSO2-Themen haben, dann ssenden Sie uns eine Nachricht über unsere Kontaktseite. Sie können sich auch selbst in unseren Schulungsangeboten über WSO2 informieren.