LDAP Connector
The Lightweight Directory Access Protocol (LDAP) connector for PingOne DaVinci lets you gain access to entries in an LDAP directory to be used in your PingOne DaVinci flow.
You can use the LDAP connector to:
-
Create a new entry in your LDAP store.
-
Reset a user’s password, including generating a new password.
-
Update a user or group’s profile.
-
Delete an entry from your LDAP store.
-
Search for and view a user’s group membership.
Setup
Resources
Learn more in the following documentation:
-
PingOne Gateway documentation:
-
Documentation for your LDAP directory, such as PingDirectory:
-
DaVinci documentation:
Requirements
To use the connector, you’ll need:
-
An LDAP directory store, such as PingDirectory:
-
Learn more in Supported directories.
-
-
Your LDAP directory store credentials
-
A PingOne LDAP Gateway installation
-
A worker application for userless administration:
-
Learn more in the Worker application documentation.
-
Setting up the LDAP connector
Review the prerequisites in Before you begin, and then follow the gateway set up instructions in Overview.
Setting up the connector configuration
In DaVinci, add an LDAP connector. Learn more in Adding a connector.
Using the connector in a flow
Managing entries in an LDAP directory store
The connector has several capabilities that allow you to manage entries in your LDAP directory store:
-
Create entry
-
Modify DN
-
Search entries
-
Delete entry
This flow allows the user to create a new entry in any LDAP directory.
-
Customize the entry-creation parameters:
-
Select the Create LDAP entry node.
-
In the DN field, customize the distinguished name of the new entry.
-
In the Attributes section, click the Add button. In the Variable Name field, enter
objectClass, and in the Value field, enter the name of the new entry’s objectClass according to the directory schema.The objectClass attribute value differs depending on the directory. For example, a new PingDirectory entry is an instance of the
inetOrgPersonobjectClass, while a new Active Directory (AD) entry is an instance of theuserobjectClass. -
In the Attributes section, click the Add button and populate the Variable Name and Value fields with information on the entry’s username.
The Variable Name differs depending on the directory. For example, a new PingDirectory entry’s username requires a variable name of
uid, while a new AD entry’s username requires a variable name ofsAMAccountName. -
(Optional) In the Attributes section, add other attributes as permitted by the new entry’s objectClass.
-
In the Perform Operation As list, select the user account performing the entry creation.
-
Click Apply.
-
Managing passwords in an LDAP directory store
The connector has several capabilities that allow you to manage different entries' passwords in your LDAP directory store:
-
Generate password
-
Reset password
-
Check password
No special flow configuration is needed. Add the capability that you want and populate its properties according to the help text.
Managing attributes in an LDAP directory store
The connector has several capabilities that allow you to manage different entries' attributes in your LDAP directory store:
-
Modify attributes
-
Replace attributes
No special flow configuration is needed. Add the capability that you want and populate its properties according to the help text.
Pass base64-encoded LDAP controls
The LDAP connector supports many well-known controls natively. For any control that doesn’t have native value-json support, you can also provide the control value using the value-base64 field.
-
In your LDAP node, in the Controls field, enter a JSON array.
[ { "oid": "<control-OID>", "criticality": false, "value-base64": "<base64-encoded DER payload>" } ]Each array element defines one control:
Element Description oidThe dotted-decimal object identifier (OID) for the control.
criticalityIndicates whether the directory server must understand the control before it can continue processing the operation.
value-base64The control value, encoded as Base64 from raw DER/ASN.1 bytes.
-
Build the value-base64 value.
The value-base64 field requires a Base64-encoded DER payload. For the correct ASN.1 structure, learn more in PingDirectory LDAP Controls in the API documentation if you’re running PingDirectory. Otherwise, reference your directory vendor’s documentation. You can find this in the directory type in your User Type configuration.
DER encodes data as tag-length-value (TLV) elements. Common tags include
0x02(INTEGER),0x04(OCTET STRING),0x01(BOOLEAN), and 0x30 (SEQUENCE). For nested structures, build the inner TLV elements first, concatenate them, and wrap them in the required outer element. -
Base64-encode your DER bytes using one of these commands:
- Bash
-
printf '\x30\x03\x02\x01\x01' | base64 - PowerShell
-
[Convert]::ToBase64String([byte[]](0x30,0x03,0x02,0x01,0x01))Both commands return:
MAMCAQE=
-
Paste the following JSON into the Controls field.
[ { "oid": "1.2.840.113556.1.4.2239", "criticality": false, "value-base64": "MAMCAQE=" } ]
Example: Active directory server policy hints control
The following example shows how to use the active directory server policy hints control, 1.2.840.113556.1.4.2239, to apply normal password policy checks, including password history enforcement, during a password reset.
-
Find the ASN.1 syntax for the control in your directory vendor’s documentation.
The documented format for this control requires a sequence with a single integer field named
Flags:PolicyHintsRequestValue ::= SEQUENCE { Flags INTEGER } -
Use a
Flagsvalue of 1 to enforce the password history check.-
Tag:
0x02(INTEGER) -
Length:
0x01 -
Value:
0x01 -
Result:
02 01 01
-
-
Wrap the encoded integer bytes inside the outer sequence element:
-
Tag:
0x30(SEQUENCE) -
Length:
0x03(The total number of bytes in the inner element) -
Value:
02 01 01 -
Result:
30 03 02 01 01
-
-
Base64-encode the final DER bytes ,
30 03 02 01 01, using one of these commands:- Bash
-
printf '\x30\x03\x02\x01\x01' | base64 - PowerShell
-
[Convert]::ToBase64String([byte[]](0x30,0x03,0x02,0x01,0x01))Both commands return:
MAMCAQE=
-
Paste the following JSON into the Controls field:
[ { "oid": "1.2.840.113556.1.4.2239", "criticality": false, "value-base64": "MAMCAQE=" } ]
Troubleshooting LDAP controls errors
- Unavailable critical extension errors
-
The
unavailableCriticalExtensionresult code indicates that your request included a control withcriticalityset totrue, but the directory server could not process it. This usually happens if:-
The server doesn’t support the control.
-
The control isn’t valid for the requested operation type.
-
The request doesn’t meet the required conditions for the control.
-
The control is only supported for specific parts of the Directory Information Tree (DIT). For example, some controls only work on user entries and will fail on server-provided entries like the root DSE, schema subentry, or configuration entries.
Check your LDAP directory server to ensure it supports the control, and validate you’re using the right control.
-
INVALID_VALUEvalidation errors-
An
INVALID_VALUEerror means the control was malformed or contained invalid attributes.{ "id":"6e5abbdd-1079-40fe-8a72-06c246e37bd4", "code":"INVALID_REQUEST", "message":"The request could not be completed. The request was malformed or invalid.", "details":[ { "code":"INVALID_VALUE", "target":"controls", "message":"Invalid value for attribute." } ] }If you’re passing a value to the value-base64 field, check your DER byte sequence and make sure it’s properly encoded as a valid Base64 string.
Capabilities
LDAP Search
Execute ldap/ad searches
Show details
-
Properties
-
Output Schema
- baseDN textField
- ldapScope dropDown
- ldapFilter textField
- ldapAttributes textFieldArrayView
-
output object