# LDAP Connector



# LDAP Connector

## Introduction

### Description

This connector implements the [LDAP](https://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol) standard and it is used to connect the Sync-Server with every server that allows this communication protocol.

### Managed System

There are a lot of servers and products that use this standard, for instance, the most known systems are:

- 389 Directory Server.
- Apache Directory Server.
- OpenLDAP.
- OpenDJ.
- Active Directory.
- Oracle Directory Server.

For more information: [List of LDAP software.](https://en.wikipedia.org/wiki/List_of_LDAP_software)

<p class="callout info">If your system is not in the previous list, it's possible to include it easily!   
  
For more information to check if your system may be synchronized with this connector you do not hesitate to contact us through our [Contact form](http://www.soffid.com/contactform/)</p>

### Prerequisites

It is needed a user with full administrator access.

## Download and Install

This addon is located in the Connectors section and its name is **LDAP plugin.**

<p class="callout info">For more information about the installation process you can visit the [Addons Getting started](https://bookstack.soffid.com/books/addons-getting-started/page/getting-started "Addons installation") page.</p>

## Agent Configuration

### Basic

#### Generic parameters

After the installation of the addon, you may create and configure agent instances.

To configure this LDAP Connector you must select "LDAP-Custom (with triggers)" in the attribute "Type" of the generic parameters section in the agent's page configuration.

<p class="callout info">For more information about how you may configure the generic parameters of the agent, see the following link: [Agents configuration](https://bookstack.soffid.com/books/soffid-3-reference-guide/page/agents "Agents")</p>

[![image-1715077578477.png](https://bookstack.soffid.com/uploads/images/gallery/2024-05/scaled-1680-/image-1715077578477.png)](https://bookstack.soffid.com/uploads/images/gallery/2024-05/image-1715077578477.png)

#### Custom parameters

Below there are the specific parameters for this agent implementation:

<div id="bkmrk-parameter-descriptio"><table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Parameter: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" tabindex="0">**Parameter**

</th><th aria-disabled="false" aria-label="Description: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" tabindex="0">**Description**

</th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd"><span class="etiqueta">User name</span>

</td><td class="confluenceTd">User name in DN format, including base name if needed

</td></tr><tr role="row"><td class="confluenceTd">Password

</td><td class="confluenceTd">Password

</td></tr><tr role="row"><td class="confluenceTd"><span class="etiqueta">Host name</span>

</td><td class="confluenceTd">Host name of the server

</td></tr><tr><td><span class="etiqueta">Enable SSL</span>

</td><td></td></tr><tr role="row"><td class="confluenceTd"><span class="etiqueta">Base DN</span>

</td><td class="confluenceTd">LDAP Base name

</td></tr><tr role="row"><td class="confluenceTd"><span class="etiqueta" style="background-color: #ffffff;">PasswordAttribute</span>

</td><td class="confluenceTd">  
</td></tr><tr role="row"><td class="confluenceTd"><span class="etiqueta">Password hash algorithm</span>

</td><td class="confluenceTd">The algorithm is used to encrypt the password. For instance SHA-1, SHA-256, MD5, etc</td></tr><tr role="row"><td class="confluenceTd"><span class="etiqueta">Password hash prefix</span>

</td><td class="confluenceTd">  
</td></tr><tr role="row"><td class="confluenceTd"><span class="etiqueta">LDAP Query page size</span>

</td><td class="confluenceTd">  
</td></tr><tr role="row"><td class="confluenceTd"><span class="etiqueta">Enable debug</span>

</td><td class="confluenceTd">Two options: Yes, No. When it is enabled more log traces are printed in the Synchronization Server log

</td></tr></tbody></table>

</div>### Attribute mapping

This connector can manage users, accounts, roles, groups, and grants.

[![image-1715077940898.png](https://bookstack.soffid.com/uploads/images/gallery/2024-05/scaled-1680-/image-1715077940898.png)](https://bookstack.soffid.com/uploads/images/gallery/2024-05/image-1715077940898.png)

<p class="callout warning">As a limitation, it cannot detect password changes to be propagated to other systems.</p>

#### Properties

Some agents require to configure some custom attributes, you will use the properties section to do that.

<div id="bkmrk-property-value-renam"><table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 97.1605%;"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Property: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 24.6716%;" tabindex="0"><div><div>**Property**</div></div></th><th aria-disabled="false" aria-label="Value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 75.3284%;" tabindex="0"><div>**Value**</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" style="width: 24.6716%;">rename

</td><td class="confluenceTd" style="width: 75.3284%;">true

</td></tr><tr role="row"><td class="confluenceTd" style="width: 24.6716%;">key

</td><td class="confluenceTd" style="width: 75.3284%;">LDAP attribute where Soffid account name is stored. If the property is not present, object will be searched by its distinguishedName

</td></tr><tr><td style="width: 24.6716%;">modificationTimestamp

</td><td style="width: 75.3284%;">LDAP attribute

</td></tr><tr><td style="width: 24.6716%;">removeDisabledAccounts

</td><td style="width: 75.3284%;">Set to true to remove disabled accounts from LDAP server

</td></tr></tbody></table>

</div>If a key value is set, LDAP connector will search for objects based on this LDAP attribute value, rather than its DN. Thus, an index on this attributed is highly recommended.

##### Renaming

To support object renaming, Soffid needs to store the Soffid account name on a specific LDAP attribute. It's highly recommended to index such a field. To enable it, add the following properties to each object mapping. At any time, object renaming can be disabled by setting the property rename to false.

<div id="bkmrk-property-value-renam-0"><table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid" style="width: 98.642%;"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="Property: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 24.4952%;" tabindex="0"><div><div>**Property**</div></div></th><th aria-disabled="false" aria-label="Value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 75.5048%;" tabindex="0"><div>**Value**</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" style="width: 24.4952%;">rename

</td><td class="confluenceTd" style="width: 75.5048%;">true

</td></tr></tbody></table>

</div>#### Attributes

You can customize attribute mappings, you only need to select system objects and the Soffid objects related, manage their attributes, and make either inbound or outbound attribute mappings.

Using a windows connector you can map users, groups, and role objects. Active Directory membership is automatically managed based on user and group mappings.

You can map users, groups, and role objects. User membership must be managed on the role members' attribute expression.

Any object mapping must have the following system attributes:

<div id="bkmrk-system-attribute-val"><table class="confluenceTable tablesorter tablesorter-default stickyTableHeaders" role="grid"><thead class="tableFloatingHeaderOriginal"><tr class="tablesorter-headerRow" role="row"><th aria-disabled="false" aria-label="System attribute: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="0" role="columnheader" scope="col" style="width: 155px;" tabindex="0"><div><div>**System attribute**</div></div></th><th aria-disabled="false" aria-label="Value: No sort applied, activate to apply an ascending sort" aria-sort="none" class="confluenceTh tablesorter-header sortableHeader tablesorter-headerUnSorted" data-column="1" role="columnheader" scope="col" style="width: 616px;" tabindex="0"><div>**Value**</div></th></tr></thead><tbody aria-live="polite" aria-relevant="all"><tr role="row"><td class="confluenceTd" style="width: 155px;">objectClass

</td><td class="confluenceTd" style="width: 616px;">LDAP Object Class. It can evaluate to an array of objects

</td></tr><tr role="row"><td class="confluenceTd" style="width: 155px;">dn

</td><td class="confluenceTd" style="width: 616px;">Full qualified object name

</td></tr></tbody></table>

</div><p class="callout info">For more information about how you may configure attribute mapping, see the following link: [Soffid Attribute Mapping Reference](https://bookstack.soffid.com/link/72#bkmrk-soffid-attributes)</p>

For instance:

[![image-1659087931478.png](https://bookstack.soffid.com/uploads/images/gallery/2022-07/scaled-1680-/image-1659087931478.png)](https://bookstack.soffid.com/uploads/images/gallery/2022-07/image-1659087931478.png)

#### Triggers

You can define BeanShell scripts that will be triggered when data is loaded into the target system (outgoing triggers). The trigger result will be a boolean value, true to continue or false to stop.

Triggers can be used to validate or perform a specific action just before performing an operation or just after performing an operation on target objects.

<p class="callout info">To view some examples, visit the [Outgoing triggers examples page](https://bookstack.soffid.com/books/connectors/page/outgoing-triggers-examples "Outgoing triggers examples").</p>