Skip to main content
LDAP service extensions let you customize how the Orchestrator handles directory operations when running as an LDAP provider. Use these hooks to implement custom search logic, authenticate users against external systems, or support Windows integrated authentication (NTLM via GSSAPI/SPNEGO).

Request Lifecycle

The LDAP provider operates over TCP using the LDAP protocol (not HTTP). Each operation type has its own processing flow and hook point.

Simple Bind Authentication

NTLM Authentication (GSSAPI/SPNEGO)

NTLM authentication is a multi-message handshake within a SASL bind. The getHashedCredentialsSE hook is called during the final Authenticate phase to retrieve the password hashes needed for verification.

Hooks

searchSE

Handle LDAP search requests by returning directory entries that match the query. Each entry maps a distinguished name (DN) to its attributes. Use this to implement custom search logic, query external directories, filter results, or build virtual directory entries from non-LDAP sources like databases or REST APIs. Signature:
App types: LDAP Provider Config location: ldapProvider.search.searchSE Parameters: Returns:
  • map[string]map[string]interface{} — a map of DNs to attribute maps, where each attribute map contains the requested attribute name-value pairs
  • error — return nil on success, or an error if the search fails

authenticateSE

Authenticate a user via LDAP simple bind. Return true if the credentials are valid, or false to deny authentication. Use this to validate credentials against an external system, implement custom password policies, or bridge LDAP authentication to a non-LDAP identity store. Signature:
App types: LDAP Provider Config location: ldapProvider.authentication.methods.simple.authenticateSE Parameters: Returns:
  • booltrue if the credentials are valid, false otherwise
  • error — return nil on success, or an error if the authentication process fails
Examples:
When an LDAP client performs a simple bind, this extension extracts the username from the bind DN and authenticates the user against an OIDC identity provider using the Resource Owner Password Credentials (ROPC) grant. This bridges LDAP authentication with a modern IdP without changes to the client application.
ldap-authenticate.go
Applications that authenticate via LDAP simple bind have no built-in way to support multi-factor authentication. This extension works around that limitation by treating the password field as a concatenation of the real password and a TOTP code (e.g., myP@ssword12345678). The password portion is verified against an IdP via ROPC, and the TOTP code is verified against an external MFA API.
ldap-authenticate-totp.go

getHashedCredentialsSE

Provide the password hashes needed for Windows integrated authentication (NTLM). The Orchestrator calls this during the GSSAPI/SPNEGO handshake with the user and domain identifiers, and expects back the pre-computed NT and LM password hashes. Use this to look up hashes from a credential store or compute them from a source system. Signature:
App types: LDAP Provider Config location: ldapProvider.authentication.methods.sasl.mechanisms.gssspnego.ntlm.getHashedCredentialsSE Parameters: Returns:
  • []byte — the NT password hash for the user
  • []byte — the LM password hash for the user
  • error — return nil on success, or an error if the credential lookup fails

Service Extensions Overview

Configuration, SDK reference, and best practices

LDAP Provider Mode

LDAP provider mode configuration and setup