Capabilities
The LDAP connector supports automatic account provisioning and deprovisioning.
POSIX account provisioning
The LDAP connector supports provisioningposixAccount 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.
The
update_profile action returns success (bool), updated_user (the modified user resource, re-fetched after the write; 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).
updated_user carries the resource identity, displayName, and the user trait — not the entry’s full attribute set. A value the action just wrote appears there only when it also feeds one of those: display_name through displayName, email through the trait’s email list, and a custom_attributes key only when it maps to a trait field (mail, displayName, sAMAccountName, userPrincipalName, a non-RDN uid or cn, lastLogonTimestamp, authTimestamp). first_name, last_name, and every other custom_attributes key reach the directory but do not appear in updated_user. Use applied to confirm those.
Two requirements come from the C1 side rather than from LDAP:
user_idtakes the C1 account identifier, not the LDAP DN. C1 resolves the account to the connector’s resource before dispatching the action. A DN fails inside C1 withresource <dn> with type user was not foundand never reaches the connector, so it produces no connector log line and leaves the directory untouched.- An attribute push rule must map from a single-valued attribute. The connector’s user profile carries only attributes that hold exactly one value on the entry, so a multi-valued source resolves to nothing: the rule saves and enables, and each push reports zero attributes applied.
update_profile is intended for generic LDAP directories (Active Directory and FreeIPA have their own connectors). It applies the following rules:- Named fields:
first_name→givenName,last_name→sn,display_name→displayName,email→mail. 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 inskipped. inetOrgPersonrequirement: onlylast_name(sn) is universal — it’s a MUST attribute of the basepersonobject class.first_name(givenName, defined in RFC 4519),display_name(displayName, RFC 2798), andemail(mail, RFC 4524) are permitted on an entry only by RFC 2798’sinetOrgPersonobject class, so writing one of them to an entry that doesn’t carryinetOrgPersonfails 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_attributesmaps 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 tocustom_attributes.{"user_id": "x"}therefore writes an attribute literally nameduser_id; it does not writeuid. A name the directory does not define is refused by the server, and the result code depends on the implementation: OpenLDAP returns 17 (“Undefined Attribute Type”), ApacheDS returns 16 (“No Such Attribute”). The same goes for baton profile field names such asloginandpath: they are attempted as literal attribute names rather than skipped. - Collisions: a
custom_attributeskey is dropped (never merged with, or overwriting, a named field’s slot) and reported once inskippedwhen 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 containingpassword— use credential rotation instead) andobjectClassare rejected; the user’s RDN attribute (for examplecnwhen the DN iscn=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.
- Value types:
custom_attributescarries one string per attribute, so binary attributes (jpegPhoto,userCertificate;binary) and option-tagged attributes (;lang-xx) cannot be set through this action. - Scope: only entries within the configured user search scope (
user-search-dn, falling back tobase-dn) can be modified; out-of-scope or non-user DNs are rejected.
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:orldaps:schemes, and optionally includes a port number
Configure the LDAP connector
- Cloud-hosted
- Self-hosted
Follow these instructions to use a built-in, no-code connector hosted by C1.Cloud-hosted connector not currently available.