Discussion:
[lsc-changes] [Ldap Synchronization...] page added: documentation:plugins:obm
webmaster
2014-03-03 14:13:25 UTC
Permalink
A page in your DokuWiki was added or changed. Here are the details:

Date : 2014/03/03 15:13
Browser : Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0
IP-Address : 88.173.78.196
Hostname : mne69-10-88-173-78-196.fbx.proxad.net
Old Revision: none
New Revision: http://lsc-project.org/wiki/documentation/plugins/obm
Edit Summary: created
User : coudot

====== OBM plugin ======

===== Presentation =====

{{ :documentation:logos:logo_obm.png?nolink& |}}

[[http://www.obm.org|OBM]] is a free messaging and collaboration platform useful for just a couple to many thousands of users with strong support for mobile device.

Since version 2.6, OBM provides a REST API to manage users and groups: [[http://obm.org/wiki/obm-provisioning-api]]

This LSC plugin uses this API in destination, so you can synchronize users and groups from an LDAP directory, a database or any other LSC sources.

===== Installation =====

Go on the [[:download|download page]], in the plugins section, and get the latest version of the OBM plugin.

Then install it in the lib/ directory of your LSC installation.

===== Configuration =====

==== XML namespace ====

You need to adapt the namespace of the main markup to import obm namespace:

<file xml>
<?xml version="1.0" ?>
<lsc xmlns="http://lsc-project.org/XSD/lsc-core-2.0.xsd" xmlns:obm="http://lsc-project.org/XSD/lsc-obm-plugin-1.0" revision="0">
...
</lsc>
</file>

==== Connection ====

Define the connection like this:

<file xml>
<pluginConnection implementationClass="org.lsc.plugins.connectors.obm.generated.obmConnectionType">
<name>obm</name>
<url>http://OBM_SYNC_IP:OBM_SYNC_PORT/obm-sync/</url>
<username>ADMIN_LOGIN at DOMAIN</username>
<password>ADMIN_PASSWORD</password>
</pluginConnection>
</file>

Parameters are:
* OBM_SYNC_IP : IP or name ot the server hosting OBM-Sync
* OBM_SYNC_PORT : Port of the OBM-Sync process
* ADMIN_LOGIN : Login of the administrator
* DOMAIN : OBM Domain
* ADMIN_PASSWORD : Password of the administrator

==== Destination service ====

You can create a service to manage users or groups. For users:

<file xml>
<pluginDestinationService implementationClass="org.lsc.plugins.connectors.obm.ObmUserDstService">
<name>obm-user-dst</name>
<connection reference="obm" />
<obm:obmUserService>
<name>obm-user-dst2</name>
<connection reference="obm" />
<obm:domainUUID>e0cf03c1-2a41-149a-bcb9-ed18a50815e7</obm:domainUUID>
<obm:writableAttributes>
<string>addresses</string>
<string>commonname</string>
<string>company</string>
<string>description</string>
<string>faxes</string>
<string>firstname</string>
<string>hidden</string>
<string>id</string>
<string>kind</string>
<string>lastname</string>
<string>login</string>
<string>mails</string>
<string>mobile</string>
<string>phones</string>
<string>profile</string>
<string>service</string>
<string>title</string>
<string>town</string>
</obm:writableAttributes>
</obm:obmUserService>
</pluginDestinationService>
</file>

For groups:

<file xml>
<pluginDestinationService implementationClass="org.lsc.plugins.connectors.obm.ObmGroupDstService">
<name>obm-group-dst</name>
<connection reference="obm" />
<obm:obmGroupService>
<name>obm-group-dst2</name>
<connection reference="obm" />
<obm:domainUUID>e0cf03c1-2a41-149a-bcb9-ed18a50815e7</obm:domainUUID>
<obm:writableAttributes>
<string>description</string>
<string>email</string>
<string>name</string>
<string>users</string>
<string>subgroups</string>
</obm:writableAttributes>
</obm:obmGroupService>
</pluginDestinationService>
</file>

This service needs the following parameters:
* domainUUID: Identifier of the domain. You can list the available domains on http://OBM_SYNC_IP:OBM_SYNC_PORT/obm-sync/provisioning/v1/domains/
* writableAttributes: list of attributes to manage trough this connector. Refer to OBM provisioning documentation to get the complete list ([[http://obm.org/wiki/provisioning-user-api|user API]] | [[http://obm.org/wiki/provisioning-group-api|group API]]).

The rest of the configuration is like any other LSC connector: define conditions and datasets to configure the mapping between your source and your destination.

For example, to manage users and subgroups in a group:
<file xml>
<dataset>
<name>users</name>
<forceValues>
<string>
<![CDATA[
var membersSrcDn = srcBean.getDatasetValuesById("member");
var memberIdValues = [];
for (var i=0; i<membersSrcDn.size(); i++) {
var memberSrcDn = membersSrcDn.get(i);
var id = "";
if ( memberSrcDn.indexOf("ou=users") != -1 ) {
try {
id = srcLdap.attribute(memberSrcDn, "entryUUID").get(0);
} catch(e) {
continue;
}
memberIdValues.push (id);
}
}
memberIdValues
]]>
</string>
</forceValues>
</dataset>
<dataset>
<name>subgroups</name>
<forceValues>
<string>
<![CDATA[
var membersSrcDn = srcBean.getDatasetValuesById("member");
var memberIdValues = [];
for (var i=0; i<membersSrcDn.size(); i++) {
var memberSrcDn = membersSrcDn.get(i);
var id = "";
if ( memberSrcDn.indexOf("ou=groups") != -1 ) {
try {
id = srcLdap.attribute(memberSrcDn, "entryUUID").get(0);
} catch(e) {
continue;
}
memberIdValues.push (id);
}
}
memberIdValues
]]>
</string>
</forceValues>
</dataset>
</file>

===== Plugin loading =====

To load the plugin into LSC, you need to modify JAVA_OPTS:
<code>
JAVA_OPTS="-DLSC.PLUGINS.PACKAGEPATH=org.lsc.plugins.connectors.obm.generated"
</code>

For example, to run a user synchronization:
<code>
JAVA_OPTS="-DLSC.PLUGINS.PACKAGEPATH=org.lsc.plugins.connectors.obm.generated" /usr/bin/lsc -f /etc/lsc/obm/ -s user -t1
</code>

<note tip>The use of -t1 limits LSC to one thread, that is better to use the OBM REST API.</note>
--
This mail was generated by DokuWiki at
http://lsc-project.org/wiki/
Loading...