Showing posts with label WSO2 IS. Show all posts
Showing posts with label WSO2 IS. Show all posts

Thursday, February 14, 2013

How to configure the WSO2IS with JDBC user store

This blog describes how to configure WSO2IS with JDBC user store, for this I'm using MySQL database.

Pre-requisites:
Download and extract the wso2is-4.1.0.zip product
Download and installed the MySQL 5.1 (http://aparnaank.blogspot.com/2012/10/how-to-configure-mysql-51-on-redhat.html)

1. First create a database in mysql ex: create database isdb;

2. Now will start to configure the WSO2IS. There are several configurations have to changed. WSO2IS home directory is referred as $IS_HOME.

Go to $IS_HOME/repository/conf/datasources directory location and open the master-datasources.xml file. This file has the database configurations and edit the master-datasources.xml file(change the bold lines according to your evn) as follows.

<datasource>
     <name>WSO2_CARBON_DB</name>
     <description>The datasource used for registry and user manager</description>
     <jndiConfig>
         <name>jdbc/WSO2CarbonDB</name>
     </jndiConfig>
     <definition type="RDBMS">
         <configuration>
             <url>jdbc:mysql://10.200.3.106:3306/isdb</url>
             <username>root</username>
             <password>root</password>
             <driverClassName>com.mysql.jdbc.Driver</driverClassName>
             <maxActive>50</maxActive>
             <maxWait>60000</maxWait>
             <testOnBorrow>true</testOnBorrow>
             <validationQuery>SELECT 1</validationQuery>
             <validationInterval>30000</validationInterval>
         </configuration>
     </definition>
 </datasource>

Database configuration is completed and will move to other configurations.

3. Go to the $IS_HOME/repository/conf/ directory location and open the ldap.xml. Edit the file as follows.

 <EmbeddedLDAP>
   <Property name="enable">false</Property>

From above configuration we are disabling the embedded ldap that comes with WSO2IS pack.

4. Now open the user-mgt.xml file which locate the same directory and set the "MultiTenantRealmConfigBuilder" to "org.wso2.carbon.user.core.config.multitenancy.SimpleRealmConfigBuilder"

ex:
<Property name="MultiTenantRealmConfigBuilder">org.wso2.carbon.user.core.config.multitenancy.SimpleRealmConfigBuilder</Property>

Uncomment following section which enable the jdbc user store configuration.
<UserStoreManager class="org.wso2.carbon.user.core.jdbc.JDBCUserStoreManager">
   <Property name="ReadOnly">false</Property>
   <Property name="MaxUserNameListLength">100</Property>
   <Property name="IsEmailUserName">false</Property>
   <Property name="DomainCalculation">default</Property>
   <Property name="PasswordDigest">SHA-256</Property>
   <Property name="StoreSaltedPassword">true</Property>
   <Property name="UserNameUniqueAcrossTenants">false</Property>
   <Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
   <Property name="PasswordJavaScriptRegEx">^[\\S]{5,30}$</Property>
   <Property name="UsernameJavaRegEx">^[^~!#$;%^*+={}\\|\\\\&lt;&gt;,\'\"]{3,30}$</Property>
   <Property name="UsernameJavaScriptRegEx">^[\\S]{3,30}$</Property>
   <Property name="RolenameJavaRegEx">^[^~!#$;%^*+={}\\|\\\\&lt;&gt;,\'\"]{3,30}$</Property>
   <Property name="RolenameJavaScriptRegEx">^[\\S]{3,30}$</Property>
   <Property name="UserRolesCacheEnabled">true</Property>
   <Property name="maxFailedLoginAttempt">0</Property>
</UserStoreManager>

5. Then edit the tenant-mgt.xml file that located in the same place.

Comment the following section:
<TenantManager class="org.wso2.carbon.user.core.tenant.CommonHybridLDAPTenantManager">
   <Property name="RootPartition">dc=wso2,dc=org</Property>
   <Property name="OrganizationalObjectClass">organizationalUnit</Property>
   <Property name="OrganizationalAttribute">ou</Property>
   <Property name="OrganizationalSubContextObjectClass">organizationalUnit</Property>
   <Property name="OrganizationalSubContextAttribute">ou</Property>
</TenantManager>

Uncomment following section:
<TenantManager class="org.wso2.carbon.user.core.tenant.JDBCTenantManager">
</TenantManager>

Now configurations are completed and before starting the server copy the mysql driver to following location

$IS_HOME/repository/components/lib

Start the WSO2IS server from the $IS_HOME with following command

./bin/wso2server.sh -Dsetup (when you give the -Dsetup option it will create all the necessary tables structure in the mysql database)

You can login to the server using default credentials username/password - admin/admin

Then you can create/delete/edit any number of users/roles