Skip to main content

Capabilities

The LDAP connector supports automatic account provisioning and deprovisioning.

POSIX account provisioning

The LDAP connector supports provisioning posixAccount entries with automatic UID number assignment. When creating a new POSIX account, the connector can look up the highest uidNumber currently in use across all existing posixAccount entries in your directory and automatically assign the next available value. To use this feature, configure the following account provisioning mappings:
Automatic UID number calculation assigns uidNumber only. You must provide gidNumber manually in the Additional Attributes mapping. If you set Calculate the next valid UID Number to true, any uidNumber value provided in Additional Attributes is ignored.

Connector actions

Connector actions are custom capabilities that extend C1 automations with app-specific operations. You can use connector actions in the Perform connector action automation step. Global actions (connector-level):
To use create_ou, the connector’s bind account must have permission to add child entries under the target parent DN (by default, the configured base DN). For OpenLDAP and similar servers, this is write/add access on the parent container; for Active Directory, delegate the Create Organizational Unit objects right on the parent OU.
Resource-scoped actions (user): The update_profile action returns success (bool), updated_user (the user resource after the update, best-effort re-fetched; absent if the read-back failed, though the write itself still succeeded), applied (the number of attributes changed), and skipped (named fields or custom_attributes entries that were not written).
update_profile is intended for generic LDAP directories (Active Directory and FreeIPA have their own connectors). It applies the following rules:
  • Named fields: first_namegivenName, last_namesn, display_namedisplayName, emailmail. A named field is applied only when present and non-empty; a present-but-empty named field cannot clear the attribute and is instead reported in skipped.
  • inetOrgPerson requirement: only last_name (sn) is universal — it’s a MUST attribute of the base person object class. first_name (givenName), display_name (displayName), and email (mail) are only defined by RFC 2798’s inetOrgPerson object class, so writing one of them to an entry that doesn’t carry inetOrgPerson fails loudly with LDAP result code 65 (“Object Class Violation”) — an atomic, clearly-signaled failure with no partial write, not a silent no-op.
  • Custom attributes: custom_attributes maps arbitrary raw LDAP attribute names to values; an empty value clears the attribute (unlike the named fields above, where empty just means “not supplied”). Keys are used verbatim as attribute names — the named-field mapping above applies only to the named arguments, never to custom_attributes. {"user_id": "x"} therefore writes an attribute literally named user_id (failing with LDAP result code 17, “Undefined Attribute Type”, if the directory has no such attribute); it does not write uid. The same goes for baton profile field names such as login and path: they are attempted as literal attribute names rather than skipped.
  • Collisions: a custom_attributes key is dropped (never merged with, or overwriting, a named field’s slot) and reported once in skipped when it case-insensitively matches either one of the four named field names, or the LDAP attribute a supplied named field is writing (givenName, sn, displayName, mail). The latter only applies when that named field was actually supplied and non-empty; otherwise {"givenName": "Jane"} is an ordinary raw write.
  • Not modifiable: password attributes (userPassword, or any name containing password — use credential rotation instead) and objectClass are rejected; the user’s RDN attribute (for example cn when the DN is cn=jdoe,...) is skipped, since renaming requires a different operation.
  • Multi-valued attributes: setting (not clearing) a value on an attribute that currently holds more than one value returns an error instead of silently discarding the extra values; clearing (an empty value) still removes all values.
  • Scope: only entries within the configured user search scope (user-search-dn, falling back to base-dn) can be modified; out-of-scope or non-user DNs are rejected.
The connector’s bind account must have permission to modify the target entry.

Gather LDAP credentials

Configuring the connector requires you to pass in credentials for LDAP. Gather these credentials before you move on. Here’s the set of credentials you’ll need when setting up the connector:
  • The username and password of an LDAP account
  • URL of the LDAP server, which can use either ldap: or ldaps: schemes, and optionally includes a port number
Done. Next, move on to the connector configuration instructions.

Configure the LDAP connector

To complete this task, you’ll need:
  • The Connector Administrator or Super Administrator role in C1
  • Access to the set of LDAP credentials generated by following the instructions above
Follow these instructions to use a built-in, no-code connector hosted by C1.Cloud-hosted connector not currently available.