The WSO2 User Manager is a library that lets developers handle user authentication and authorization in applications. It authenticates users from different types of user stores and currently has the capability to easily plug-in to JDBC, LDAP and AD.
Given below are the steps to tryout JDBC user store. I'll be using a MySql database for this.
1. Create a MySQL database
- In my database I have following structure;
/*Create a new usermgmt database */
create database usermgmt;
/*Create the users table */
create table usermgmt.users (username varchar(10) primary key,password varchar(10)) engine=innodb;
/*Create the roles table */
create table usermgmt.roles (rolename varchar(10) primary key,description varchar(15)) engine=innodb;
/*Create the userroles table */
create table usermgmt.userroles (
username varchar(10),
rolename varchar(10),
constraint un foreign key (username) references usermgmt.users(username),
constraint rn foreign key (rolename) references usermgmt.roles(rolename)
) engine=innodb;
/*Create the userprofiles table */
create table usermgmt.userprofiles (
username varchar(10),
profilename varchar(10),
email varchar(25),
postalCode varchar(5),
country varchar(10),
firstname varchar(10),
lastname varchar(10),
homephone varchar(10),
constraint un1 foreign key (username) references usermgmt.users(username)
) engine=innodb;
/*Describe the tables that were created above */
describe usermgmt.users;
describe usermgmt.roles;
describe usermgmt.userroles;
/*Insert data into the users table */
insert into usermgmt.users (username, password) values ("tamara", "tamara");
insert into usermgmt.users (username, password) values ("saman", "saman");
insert into usermgmt.users (username, password) values ("yumani", "yumani");
/*Insert data into the roles table */
insert into usermgmt.roles (rolename, description) values ("admin", "Administrator");
insert into usermgmt.roles (rolename, description) values ("guest", "Guest User");
insert into usermgmt.roles (rolename, description) values ("tester", "Tester");
/* Insert data into the userroles table */
insert into usermgmt.userroles (username, rolename) values ("tamara", "admin");
insert into usermgmt.userroles (username, rolename) values ("saman", "guest");
insert into usermgmt.userroles (username, rolename) values ("yumani", "tester");
/*Insert data into the userprofile table */
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("tamara", "default", "tamara@yahoo.com", "123", "Sri Lanka", "Tamara", "Cuttilan", "1111111111");
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("saman", "home", "saman@yahoo.com", "234", "SriLanka", "Saman", "Peries", "2222222222");
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("yumani", "default", "yumani@yahoo.com", "345", "USA", "Yumani", "Ranaweera", "3333333333");
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("yumani", "home", "yumani@gmail.com", "333", "USA", "Yumani", "Ranaweera", "4444444444");
insert into usermgmt.userprofiles (username, profilename, email, postalCode, country, firstname, lastname, homephone) values ("tamara", "home", "tamara@gmail.com", "444", "Sri Lanka", "Tamara", "Cuttilan","5555555555");
/*Retrieve table data */
select * from usermgmt.users;
select * from usermgmt.roles;
select * from usermgmt.userroles;
select * from usermgmt.userprofiles;
- Next, open a command prompt, navigate to the location where you saved the above file.
- Type at the prompt;
mysql -h localhost -u root -p -t -vv< {filename}.txt
NOTE: -vv was put to echo the commands to the output. You can remove that if its not required.
2. Install WSO2 ESB\WSAS\IS which has User Manager component in them
- Download a binary distribution and unzip it to your local file system.
- I will demonstrate with WSO2 Identity Server (IS).
- This is to be able to connect to MySQL from our application.
- Download the MySQL JDBC Driver
- Copy and paste it to WSO2_IS_HOME\repository\components\extensions folder.
- Go to WSO2_IS_HOME\bin and execute wso2server.bat file.
Now that we have the prerequisite ready, let's setup the external user store and tryit out.
- Once the server is started open a browser and access, https://localhost:9443/carbon/. You get WSO2 IS admin console.
- Sign-in using the default admin username\password (admin\admin).
- In the console click on 'User Management' menu option and in 'User Management' page click on 'Add External User Store' link.
- In the 'Add External User Store' page, select to create a 'JDBC' type external user store.
- Use following information for the rest of the fields.
- Now we are done with creating the external user store. The user store connections can be validated via 'Test connection' option in the External user store menu as shown below.
