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 |
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 |
Überprüfen Sie die mit den Show-Tabellen erstellten Tabellen; Befehl:
MariaDB [YENLO_USERSTORE]> show tables; |
Um die Beziehungen zu sehen, starten Sie DBeaver und stellen eine neue Verbindung zu MariaDB her.
Klicken Sie auf Weiter, bis die Verbindung beendet ist. Öffnen Sie die Verbindung zeigen die Tabellen im YENLO_USERSTORE
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.
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 |
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.
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.
- Wählen Sie wso2.carbon.user.core.jdbc.JDBCUserStoreManager aus der Dropdown-Liste User Store Manager Class.
- Tragen Sie Training als Domänennamen ein.
Geben Sie in den Eigenschaften die folgenden Werte ein
jdbc:mysql://localhost:3306/YENLO_USERSTORE |
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.
Jetzt sollte es möglich sein, neue Benutzer und Rollen in den Benutzerspeicher aufzunehmen. Fügen Sie aMArvin zum Benutzerspeicher hinzu.
Bearbeiten Sie anschließend sein Benutzerprofil
Bearbeiten Sie die Pflichtfelder und klicken Sie auf Aktualisieren.
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.
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.
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 |
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.