This is an extension, which consists of a user store implemented using MongoDB (A NoSQL Database) for WSO2 Product-IS. This MongoDB user store extension can be used as both primary and secondary user store for product-IS. This extension is compatible with IS version 5.5.0.
- First, build the
MongoDB user store extensionusing maven by executing the following command from the root folder of this extension
mvn clean install -
Copy the extension jar file created inside the
targetfolder and add it into the/repository/components/dropinsfolder of product-IS -
Copy the MongoDB-Java-driver jar into the
/repository/components/libfolder of product-IS -
start the MongoDB server using the following command
sudo service mongod start - Start a Mongo shell using the below command
mongo --host 127.0.0.1:27017- Create a database named
wso2_carbon_dbby entering the following command in the Mongo shell
use wso2_carbon_db- Create the necessary collections by running the MongoDB script file user_mgt_collections.js provided by executing the following command in the Mongo shell
load(<PATH_TO_THE_SCRIPT_FILE>)- Finally, open a terminal, navigate to the
binfolder of product-IS and start the IS server by executing the following command
./wso2server.shNow you have successfully added the mongoDB user store extension to the product-IS. You should see MongoDB user store listed along with other user stores using which you can create a MonogDB secondary user store and started using it for your user management operations.
The above configurations are good enough for you to use the MongoDB as a secondary user store manager. However, in order to use the MongoDB as the primary user store of product-IS you require some additional configurations as follow.
- After following steps 1-7, prior to start the IS server, add the following in the
user-mgt.xmlfile of product-IS. You can find this file inside/repository/conffolder. Make sure to replace theConnectionNameandConnectionPasswordwith your credentials for the specified MongoDB database.
<UserStoreManager class="org.wso2.carbon.mongodb.user.store.mgt.MongoDBUserStoreManager">
<Property name="TenantManager">org.wso2.carbon.user.core.tenant.JDBCTenantManager</Property>
<Property name="ConnectionURL">mongodb://localhost/wso2_carbon_db</Property>
<Property name="ConnectionName">USERNAME</Property>
<Property name="ConnectionPassword">PASSWORD</Property>
<Property name="ReadGroups">true</Property>
<Property name="ReadOnly">false</Property>
<Property name="IsEmailUserName">false</Property>
<Property name="DomainCalculation">default</Property>
<Property name="WriteGroups">true</Property>
<Property name="UserNameUniqueAcrossTenants">false</Property>
<Property name="PasswordJavaRegEx">^[\S]{5,30}$</Property>
<Property name="PasswordJavaScriptRegEx">^[\S]{5,30}$</Property>
<Property name="PasswordJavaRegExViolationErrorMsg">Password pattern policy violated.</Property>
<Property name="UsernameJavaRegEx">^[\S]{5,30}$</Property>
<Property name="UsernameJavaScriptRegEx">^[\S]{5,30}$</Property>
<Property name="UsernameJavaRegExViolationErrorMsg">Username pattern policy violated.</Property>
<Property name="RolenameJavaRegEx">^[\S]{5,30}$</Property>
<Property name="RolenameJavaScriptRegEx">^[\S]{5,30}$</Property>
<Property name="validationInterval"/>
<Property name="CaseInsensitiveUsername">true</Property>
<Property name="SCIMEnabled">false</Property>
<Property name="IsBulkImportSupported">false</Property>
<Property name="PasswordDigest">SHA-256</Property>
<Property name="MultiAttributeSeparator">,</Property>
<Property name="StoreSaltedPassword">true</Property>
<Property name="MaximumUserListLength">100</Property>
<Property name="MaximumRoleListLength">100</Property>
<Property name="EnableUserRoleCache">true</Property>
<Property name="UserNameUniqueAcrossTenants">false</Property>
</UserStoreManager>- The format of the
ConnectionURLis given below. In case if the port is not specified, then27017will be used, which is the default port for MongoDB.
mongodb://host[:port]/database[?options]
-
Comment the existing primary user store xml configurations in
user-mgt.xmland save the file. -
Now, open a terminal, navigate to the
binfolder of product-IS and start the IS server by executing the following command
./wso2server.shThis will start the IS server with MongoDB as the primary user store. Hence, all your user management related tasks will be stored in MongoDB by default.