fb
Identity & Access Management 6 minuten

Bulkimport van gebruikers in een secundaire User Store met 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
Scroll

De huidige versie van de WSO2 Identity Server, net als de WSO2 Enterprise Integrator en de WSO2 API Manager, kennen het concept van een primaire user store en een aantal secundaire user stores. Niet alle producten gebruiken de user store op dezelfde manier. De Enterprise Integrator heeft bijvoorbeeld een beperkt aantal claims die het in de database opslaat. De reden hiervoor is dat de gebruiker voor de WSO2 Enterprise Integrator relatief secundair is, want het doel van het product is de bemiddeling en transformatie van berichten. De WSO2 Identity server gaat vooral om identiteits- en toegangsbeheer en heeft de mogelijkheid om extra claims aan de standaard dialecten toe te voegen.

Hoe gegevens opgeslagen worden

De gegevens worden standaard in een database opgeslagen. In de meeste gevallen is dit H2, een plat databasebestand. Alleen de Identity Server gebruikt een embedded LDAP. Omdat LDAP net wat gecompliceerder is om in te bladeren zullen we de structuur met DBeaver laten zien. Dat is een SQL-client die we eerder ook al gebruikten. Voor meer informatie over DBeaver kan ik je deze blog aanraden die ik in het Engels geschreven heb.

Een snelle set-up

Als je een secundaire user store wil maken, dan is de makkelijkste manier om MySQL / MariaDB te gebruiken. Dat is een krachtige, lichtgewicht user store. Het is ook de database die we bij voorkeur voor onze trainingen gebruiken. Zorg ervoor dat je ofwel MySQL of MariaDB geïnstalleerd hebt. Zoek voor de installatie op het internet naar makkelijke instructies, zoals deze voor MariaDB op Centos 7

De MariaDB-omgeving is geïnstalleerd op de training instance. Verbind met MySQL door de opdrachtregel te gebruiken. Het commando dat je invoert om die verbinding met MySQL te maken is:

 mysql -u root -proot
WSO2 IS 5.7.0 - mysql -u root -proot

Creëer een database binnen MySQL voor de user store. Het MySql commando dat je daarvoor gebruikt is:

create database YENLO_USERSTORE;

Selecteer de zojuist aangemaakte database met het commando:

use YENLO_USERSTORE;.

We gaan het script dat de tabellen maakt voor de MariaDB/Mysql zoals dat op [IS_Home]/dbscripts/mysql.sql staat iets aanpassen. Dit doen we omdat het script zowel de Registry als de User tabellen maakt. Vanwege het gebruik van dit script om de primaire User Store (na) te maken is dit standaard.

Open het mysql.sql bestand met een tekstverwerker en zoek naar USER MANAGER TABLES. Verwijder alle REG definities en sla het bestand op als mysql_um.sql.

Voer daarna het volgende commando uit:

Source [IS-HOME]/dbscripts/mysql_um.sql
WSO2 IS 5.7.0 - [IS-HOME]dbscriptsmysql_um.sql

Controleer de aangemaakte tabellen met het ‘show tables’ commando:

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}

Start DBeaver op om de verbanden te kunnen zien. Dit doe je door een nieuwe verbinding te maken met MariaDB.

DBeaver - MariaDB - WSO2 IS 5.7.0

Klik op ‘next’ totdat de Verbinding tot stand gebracht is. Door op ‘Open the connection’ te klikken krijg je de tabellen in de YENLO_USERSTORE te zien.

Yenlo UserStore - WSO2 IS 5.7.0

Selecteer UM_USER en klik op ‘ER Diagram’. Je ziet nu de UM_USER en het UM_USER_ATTRIBUTE. De tabel ‘user attribute’ is de plek waar de USER_Values worden opgeslagen. Dit zorgt voor flexibiliteit, omdat het aantal velden niet vooraf gedefinieerd wordt, maar er wel een relatie met een attribute name en attribute value vastgelegd worden.

Database Navigator Yenlo UserStore - WSO2 IS 5.7.0

De JDBC connectie inschakelen

Als we een MySQL database in IS willen gebruiken, zullen we het jar-bestand van de JDBC connector naar [IS_HOME]/repository/components/lib moeten kopiëren. Het connector bestand kan op deze plek gedownload worden.

Start de Identity Server opnieuw met de -DosgiConsole parameter. Hierdoor zal de OSGIconsole laden en die kun je gebruiken om te zien of de mysql jar geladen is. Als het systeem gestart is (dat is als de Management URL getoond wordt), druk je in de terminal op enter.

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

Je zult een knipperende cursor zien. Wanneer het product gestart is, druk je op enter en typ je:

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

Voor windows is het commando vergelijkbaar en dient in een command window of Powershell ingevoerd te worden (in [IS-HOME]/bin: wso2server.bat -DosgiConsole

Dit laat zien dat de mysql connector als bundel in IS geladen is.

Configure a Secondary User Store

Log in op de Management UI van de Identity Server (e.g. https://localhost:9443/carbon) en klik op Main > User Stores > Add.

User Stores - WSO2 IS 5.7.0

Het scherm ‘Add New User Store’ opent.

Let op: Je kunt de PRIMARY user store niet updaten terwijl het programma draait, omdat deze dan in gebruik is.

  1. Selecteer wso2.carbon.user.core.jdbc.JDBCUserStoreManager in de User Store Manager Class dropdownlijst.
  2. Voer Training in bij ‘domain name’.
Add New User Store - WSO2 IS 5.7.0

Vul de volgende waarden in als properties:

jdbc:mysql://localhost:3306/YENLO_USERSTORE root root com.mysql.jdbc.Driver
WSO2 Carbon - WSO2 IS 5.7.0

Klik op Test Connection om te zien of de verbinding werkt.

Klik op Add om de verbinding toe te voegen.

Ververs de pagina om de zojuist toegevoegde user store te kunnen zien.

User Stores - carbon user core

Nu zou het mogelijk moeten zijn om nieuwe gebruikers en nieuwe rollen aan de user store toe te voegen. Voeg Marvin toe aan de user store YENLO. Vervolgens pas je zijn User Profile aan.

Add New User - Enter Username and Password
Users - User profile - WSO2 IS 5.7.0

Voer wijzigingen door voor de verplichte velden en klik op ‘Update’.

Update Profile - Yenlo User Store _WSO2 IS 5.7.0

Alle nieuwe gebruikers en rollen, die aan de user store worden toegevoegd, zouden in de MySQL database moeten verschijnen. De waarden staan in de YENLO_USERSTORE UM_USER_ATTRIBUTE in een 1:N verhouding.

UM_User_Attribute - WSO2 IS 5.7.0

Bulk import

De WSO2 Identity Server heeft de mogelijkheid om een bulk import van gebruikers te doen. Dit werkt met een excelbestand (.xls) dat geüpload wordt via de management UI of via de Admin Services.

Onder ‘Advanced properties’ in de User store die je gemaakt hebt, kun je ‘Is Bulk Import Supported’ aanvinken. Klik op ‘Update’ om die wijziging op te slaan.

Advanced Properties User store - WSO2 IS 5.7.0

We zullen nu 4 gebruikers uploaden met een excelbestand (in CSV-formaat). Je kunt bulkload.csv van bit.ly/WSO2GREGSAMPLES downloaden (ga naar map IS570).

UserName,Password
JohnDoe,jdoepw
JaneDoe,pwjdoe
JackDoe,jpwdoe
JillDoe,zaq1@WSX
Search Users - Yenlo User Store - WSO2 IS 5.7.0

Er is een limiet van 500.000 gebruikers per CSV-bestand.

Zoals je kunt zien is het gemakkelijk om met een bulkimport gebruikers, samen met de claims, in de WSO2 Identity Server te importeren. Je kunt dit zelfs geprogrammeerd doen met de Admin Services. Omdat, zoals we zeggen, er met WSO2 altijd nog een andere manier is om het te doen. Als je vragen hebt over wat er in deze blog besproken is of over andere WSO2-gerelateerde zaken, stuur ons dan een bericht via onze contact pagina. Je kunt ook deelnemen aan onze WSO2 trainingen om zelf praktische ervaring op te doen.