LDAP Agent deployment guide
The LDAP Agent is shared infrastructure used by all Active Directory connections in SecureAuth Connect. Deployment is the same for Workforce, B2B, enterprise, and partner workspaces. For workspace-specific connection setup, see Active Directory (Workforce) (Workforce workspace) or Active Directory (CIAM) (B2B, enterprise, partner workspaces).
The LDAP Agent is the same binary for SecureAuth Connect and Arculix deployments. This deployment guide applies to both products.
The LDAP Agent connects your Active Directory with SecureAuth for authentication and user synchronization. This guide covers installation and configuration.
Architecture overview
SecureAuth Connect handles authentication for your organization, but it needs a secure connection to your Active Directory to verify user credentials and retrieve user information. The LDAP Agent provides this connection by running on a server within your network that can communicate with both:
- Your Active Directory: Through LDAP/LDAPS protocols for user authentication and directory queries
- SecureAuth Connect: Through secure WebSocket connections for authentication requests
System requirements
These requirements apply to the on-premises or cloud server where you install the LDAP Agent.
Supported operating systems
Windows
- Windows Server 2016 or later
Linux
- Red Hat Enterprise Linux 8/9
- Rocky Linux 8/9
- Ubuntu 18.04 LTS
- Ubuntu 20.04 LTS
Minimum hardware requirements
- CPU: 2 cores minimum
- Memory: 2-4 GB RAM
- Storage: 16-32 GB SSD storage
- Network: Reliable network connectivity to domain controllers and SecureAuth
Windows Server environments typically require resources at the higher end of these ranges, while Linux installations generally operate efficiently with the minimum specifications.
High availability recommendations
We recommend deploying two or more LDAP Agent instances to provide high availability. For authentication and directory queries, the LDAP Agent is stateless and scales horizontally without limitation. The system can also operate with a single instance if high availability is not required.
If you enable Active Directory Sync, enable it on only one instance. See Running multiple agent instances.
Any virtualization platform capable of hosting Linux or Windows servers is suitable, including:
- On-premises: VMware ESXi, Microsoft Hyper-V
- Cloud environments: Amazon EC2, Microsoft Azure
Network requirements
All communication with the LDAP Agent uses HTTPS with additional security layers that provide authenticity beyond HTTPS certificates by signing all communication.
Outbound access
The LDAP Agent requires outbound access to these external services:
| Service | Protocol | Port | Host |
|---|---|---|---|
| SecureAuth Switchboard | WSS (WebSocket Secure) | 443 | Environment-specific (see Cloud Server Environments) |
Additional outbound access for Docker deployments:
| Service | Protocol | Port | Host |
|---|---|---|---|
| Docker updates | TCP | 80, 443 | download.docker.com |
| Docker Compose download | TCP | 80, 443 | github.com |
Internal network access
The LDAP Agent requires access to these internal services:
| Service | Protocol | Port | Description |
|---|---|---|---|
| LDAPS | TCP | 636 | Secure LDAP service (recommended) |
| LDAP | TCP | 389 | Non-secure LDAP service |
| DNS | UDP | 53 | DNS server |
Use of non-secure LDAP (port 389) is not recommended. Only use when you can guarantee protection of data in transit through other means such as physical security controls.
Active Directory requirements
The LDAP Agent communicates with your Active Directory using the LDAP protocol. Before deployment, prepare the following information and ensure proper account provisioning.
Required configuration
| Parameter | Required | Description |
|---|---|---|
| LDAP URL | Yes | The LDAP URL for performing directory queries. Must begin with ldap:// or ldaps:// and may include an optional port number (default: 389 for ldap, 636 for ldaps).Examples: • ldaps://dc1.company.com/• ldaps://ad1.example.org:5000/ |
| Bind User | Linux only | The user account for binding to the LDAP server (SIMPLE authentication). Not required on Windows, where the agent uses Kerberos/SSPI with the service account. Format options: • Distinguished Name: CN=SecureAuthService,OU=Service Accounts,DC=company,DC=com• User Principal Name: secureauth-svc@company.comImportant: Create a dedicated service account with read-only access to the directory. |
| Bind Password | Linux only | Password for the bind user account. Not required on Windows (Kerberos/SSPI). |
| Base DN | Yes | Starting point for LDAP queries. All relevant users and groups must be descendants of this DN. Example: DC=company,DC=com |
| TLS Trusted CAs | No | PEM format certificates representing trusted certificate authorities for verifying the LDAP server's certificate. Include enterprise CA certificates or the LDAP server certificate itself. Warning: If specified, the operating system's default trusted CAs will not be used. |
Service account requirements
Basic permissions:
- Read access to all user and group objects in the directory
- Password reset permissions (required only if enabling password reset functionality)
The SecureAuth integration will stop functioning if the service account is disabled, its password is changed, or its privileges are revoked.
Pre-installation checklist
Use this checklist to prepare for installation:
- Required servers or virtual machines are provisioned
- Required firewall rules are in place
- Active Directory read-only service account has been created
- Active Directory LDAP service is reachable from LDAP Agent hosts
- Optional: If using LDAPS (port 636), certificate or certificate chain is available for server verification
Get connector information for LDAP Agent
Before installation, obtain the Agent ID and Shared Secret from your Active Directory connection in SecureAuth Connect. The location depends on the workspace type.
If you're deploying the LDAP Agent for Arculix, retrieve the Agent ID and Shared Secret from the Arculix admin console: User Directories > your Active Directory configuration. Skip the SecureAuth Connect steps below.
Workforce workspaces
-
Go to Authentication > User Stores.
-
Edit your Microsoft Active Directory connection.
-
Expand Search Lookup and Password Permission.
-
Copy the Agent ID and Shared Secret.

B2B, enterprise, and partner workspaces
-
Go to Authentication > Providers.
-
Open your Active Directory identity provider.
-
On the Configuration tab, expand Active Directory Settings.
-
Click Copy to copy the Agent ID, then click Click to Reveal to display the Shared Secret.

Installation
Choose your platform:
Windows install and configuration
For Active Directory environments, installing the LDAP Agent on a domain-joined Windows Server is the recommended approach. It enables Kerberos/SSPI authentication, so you don't store service account passwords in configuration files.
Prerequisites
- Windows Server 2016 or later, domain-joined.
- A domain service account to run the LDAP Agent service. The account needs read access to the directory for LDAP queries, password reset permissions if you enable password reset, and the "Replicating Directory Changes" permission if you enable AD Sync.
- Outbound HTTPS (port 443) access to SecureAuth cloud services and LDAPS (port 636) access to your domain controllers.
- Agent ID and Shared Secret from SecureAuth. See Get connector information for LDAP Agent.
Install the service
Use the installer for a standard deployment:
- Download the Windows installer package. If you haven't already downloaded it while adding Active Directory in SecureAuth Connect, see Connect Active Directory for download instructions.
- Run the installer as an administrator.
- Set the service to run under your domain service account so it can authenticate with Kerberos.
- Configure the agent using the YAML configuration file (shown below).
Alternatively, install and manage the service from the command line. Run PowerShell as an administrator:
# Test connectivity before installing (requires --config)
.\ldap-agent.exe --config config.yaml --test
# Run in the foreground for testing (requires --config; Ctrl+C to stop)
.\ldap-agent.exe --config config.yaml --foreground
# Install the Windows service (requires --config; embeds the path in the service)
.\ldap-agent.exe --config config.yaml --install
# Start the service
.\ldap-agent.exe --start
# Stop the service
.\ldap-agent.exe --stop
# Uninstall the service
.\ldap-agent.exe --remove
Only --install, --test, and --foreground require the --config argument. The --start, --stop, and --remove commands manage the service by name and don't need a configuration file.
Check status and view logs with:
# Check service status
Get-Service "Acceptto LDAP Agent"
# View recent service logs in Event Viewer
Get-EventLog -LogName Application -Source "Acceptto LDAP Agent" -Newest 20
Windows configuration
On Windows, the agent automatically uses Kerberos/SSPI authentication when you don't provide bind credentials. This is the recommended configuration:
AgentID: ldap:v1:your-agent-id
SharedSecret: your-base64-shared-secret
# LDAP configuration - no credentials needed on Windows
LDAPURLs:
- ldaps://dc.company.com:636/
LDAPBaseDN: dc=company,dc=com
# LDAPBindUser and LDAPBindPass are not required on Windows.
# The agent uses the Windows service account credentials automatically.
# Optional: trust your enterprise CA certificate
LDAPTLSTrustedCAs: |
-----BEGIN CERTIFICATE-----
... your CA certificate ...
-----END CERTIFICATE-----
Running under a domain service account with Kerberos/SSPI keeps passwords out of configuration files, lets Windows manage the credentials, and allows password reset and AD Sync to work automatically with the service account's permissions.
Linux RPM installation
The LDAP Agent RPM package is named acceptto-ldap-agent-X.Y.Z-1.x86_64.rpm, where X.Y.Z is the version number.
Installation process
When installed via RPM, the agent integrates with systemd for service management, including automatic launch at boot and logging through syslog. Agent logs are written to /var/log/messages by default (locations may vary based on your infrastructure).
Installation steps
-
Download the RPM package. If you haven't already downloaded it while adding Active Directory in SecureAuth Connect, see Connect Active Directory for download instructions.
-
Install the package:
sudo rpm -ivh acceptto-ldap-agent-X.Y.Z-1.x86_64.rpm -
Configure the agent by editing the YAML configuration file:
sudo vi /etc/acceptto/ldap-agent.conf -
Test the agent connectivity (optional but recommended):
ldap-agent -config /etc/acceptto/ldap-agent.conf -test -
Enable and start the service:
sudo systemctl enable acceptto-ldap-agent
sudo systemctl start acceptto-ldap-agent
Service management
# Start the service
sudo systemctl start acceptto-ldap-agent
# Stop the service
sudo systemctl stop acceptto-ldap-agent
# Restart the service
sudo systemctl restart acceptto-ldap-agent
# Check service status
sudo systemctl status acceptto-ldap-agent
# View logs
sudo journalctl -u acceptto-ldap-agent -f
If an ldap-agent.env file is present in /etc/acceptto/, it will be used instead of the YAML ldap-agent.conf file for backwards compatibility. SecureAuth recommends using the YAML configuration for new RPM deployments.
Linux install (Docker)
On Linux, the LDAP Agent runs as a Docker container. Kerberos/SSPI is not available on Linux, so you must provide bind credentials (LDAPBindUser and LDAPBindPass) for SIMPLE authentication.
Prerequisites
- An x86-64 Linux server capable of running Docker. The agent is lightweight: a dedicated host with 2 GB RAM and 16 GB storage is sufficient. Physical and virtual servers are both supported. The supplied installation scripts support:
- Red Hat Enterprise Linux 8 or 9
- Rocky Linux 8 or 9
- Ubuntu 18.04 LTS or 20.04 LTS
- Docker 19.3.0 or higher and Docker Compose 1.26 or higher. The bundled
install-docker.shscript can install these if they aren't already present. - Incoming network access from SecureAuth cloud services on the configured HTTPS port (typically 443).
- Outgoing access to your LDAP directory server on port 389 (LDAP) or 636 (LDAPS).
Package contents
The agent is distributed as an archive named ldap-agent-X.Y.Z.tar.xz, where X.Y.Z is the release version. It contains:
docker-compose.yml– Docker Compose configuration for launching the agent.install-docker.sh– Helper script to install Docker on the host.install.sh– The LDAP Agent installation script.ldap-agent-image.tar– The LDAP Agent Docker image.manifest.json– Release metadata, provided for informational purposes only.
First-time installation
- Download the installation package
ldap-agent-X.Y.Z.tar.xzand upload it to the server. If you haven't already downloaded it while adding Active Directory in SecureAuth Connect, see Connect Active Directory for download instructions. - Extract the archive and change into the directory:
tar -xvJ -f ldap-agent-X.Y.Z.tar.xz
cd ldap-agent-X.Y.Z - Install Docker if it isn't already present:
sudo ./install-docker.sh - Create the configuration file. Add an
ldap-agent-config.envfile to theldap-agent-X.Y.Zdirectory with your Active Directory and SecureAuth connection values. See LDAP Agent configuration for the available settings. - Install the agent:
sudo ./install.sh - Test connectivity to Active Directory:
docker compose exec ldap-agent ./ldap-agent -test
Upgrade
- Upload the new installation package
ldap-agent-X.Y.Z.tar.xzto the server. - Extract it and change into the directory:
tar -xvJ -f ldap-agent-X.Y.Z.tar.xz
cd ldap-agent-X.Y.Z - Run the installation script:
sudo ./install.sh
LDAP Agent configuration
Authentication methods
The LDAP Agent supports two methods for authenticating to Active Directory:
| Method | Platform | Configuration |
|---|---|---|
| Kerberos/SSPI (recommended) | Windows only | Leave LDAPBindUser and LDAPBindPass empty. The agent uses the Windows service account credentials, so no passwords are stored in configuration files. |
| SIMPLE (username and password) | All platforms | Provide LDAPBindUser and LDAPBindPass. Credentials are stored in the configuration. |
On Windows, when LDAPBindUser and LDAPBindPass are empty, the agent automatically uses Kerberos/SSPI with the Windows service account. This is the recommended configuration for Windows deployments.
On Linux, Kerberos/SSPI is not available. Provide LDAPBindUser and LDAPBindPass for SIMPLE authentication.
Configuration file locations
Windows
- Configuration:
C:\Program Files\SecureAuth\LDAP Agent\config\config.yaml(YAML format) - Logs:
C:\Program Files\SecureAuth\LDAP Agent\logs\
Linux (RPM installation)
- Configuration:
/etc/acceptto/ldap-agent.conf(YAML format) - Alternative:
/etc/acceptto/ldap-agent.env(environment variables) - Logs:
/var/log/messages
Linux (Docker)
- Configuration:
ldap-agent-config.envin the agent install directory (environment variables) - Logs:
docker compose logs ldap-agent
YAML configuration format (recommended)
# Get Agent ID and Shared Secret from your user store connection settings in SecureAuth Connect
AgentID: your-agent-id-from-secureauth
SharedSecret: your-shared-secret-from-secureauth
# The LDAP parameters used to reach a user store, like Active Directory
LDAPURLs:
- ldaps://dc1.company.com/
- ldaps://dc2.company.com/
LDAPBindUser: CN=SecureAuthService,OU=Service Accounts,DC=company,DC=com
LDAPBindPass: your-service-account-password
LDAPBaseDN: DC=company,DC=com
# Optional: Password reset functionality (requires LDAPS)
# LDAPResetPasswordBindUser: CN=SecureAuthResetService,OU=Service Accounts,DC=company,DC=com
# LDAPResetPasswordBindPass: your-reset-service-account-password
# Optional: If using LDAPS and the LDAP server's certificate is not issued by a public
# certificate authority, provide a trusted root CA or the LDAPS certificate itself
# LDAPTLSTrustedCAs: |
# -----BEGIN CERTIFICATE-----
# MIIFdzCCA1+gAwIBAgIUPhmZ5ytNQDJ1gqIYtPWXsFSXbm8wDQYJKoZIhvcNAQEL
# BQAwYzELMAkGA1UEBhMCVVMxDzANBgNVBAgMBk9yZWdvbjERMA8GA1UEBwwIUG9y
# ...
# nRFv5H77DMo15HfFgGsy7zCt7OrIHl/G/PVLce4/4T+cLjahHDbn5J6Cz9DWNYYq
# jRgO45686HIchzfyTpPRbdt+S7TA+1ToUX5nlnCFhsgcCwBuPqCozNBvTbYN7xdq
# fkATtpM5lE4Ip7Y=
# -----END CERTIFICATE-----
# Optional: Additional configuration
# LogLevel: info
# AuthenticationTimeout: 5s
# RequestTimeout: 5s
# RequestWorkers: 500
Environment variable format (alternative)
# SecureAuth connection
ALA_AGENT_ID=your-agent-id-from-secureauth
ALA_SHARED_SECRET=your-shared-secret-from-secureauth
# The LDAP parameters used to reach your user store like Active Directory
ALA_LDAP_URLS='ldaps://dc1.company.com/,ldaps://dc2.company.com/'
ALA_LDAP_BIND_USER='CN=SecureAuthService,OU=Service Accounts,DC=company,DC=com'
ALA_LDAP_BIND_PASS='your-service-account-password'
ALA_LDAP_BASE_DN='DC=company,DC=com'
# Optional: Password reset functionality (requires LDAPS)
# ALA_LDAP_RESET_PASSWORD_BIND_USER='CN=SecureAuthResetService,OU=Service Accounts,DC=company,DC=com'
# ALA_LDAP_RESET_PASSWORD_BIND_PASS='your-reset-service-account-password'
# Optional: TLS certificate configuration
# ALA_LDAP_TLS_TRUSTED_CAS='
# -----BEGIN CERTIFICATE-----
# MIIFdzCCA1+gAwIBAgIUPhmZ5ytNQDJ1gqIYtPWXsFSXbm8wDQYJKoZIhvcNAQEL
# BQAwYzELMAkGA1UEBhMCVVMxDzANBgNVBAgMBk9yZWdvbjERMA8GA1UEBwwIUG9y
# ...
# nRFv5H77DMo15HfFgGsy7zCt7OrIHl/G/PVLce4/4T+cLjahHDbn5J6Cz9DWNYYq
# jRgO45686HIchzfyTpPRbdt+S7TA+1ToUX5nlnCFhsgcCwBuPqCozNBvTbYN7xdq
# fkATtpM5lE4Ip7Y=
# -----END CERTIFICATE-----
# Optional: Additional configuration
# ALA_LOG_LEVEL=info
# ALA_AUTHENTICATION_TIMEOUT=5s
# ALA_REQUEST_TIMEOUT=5s
# ALA_REQUEST_WORKERS=500
Required configuration parameters
| Parameter | YAML Format | Environment Format | Description |
|---|---|---|---|
| Agent ID | AgentID | ALA_AGENT_ID | Unique identifier from SecureAuth Connect |
| Shared Secret | SharedSecret | ALA_SHARED_SECRET | Authentication token from SecureAuth Connect |
| LDAP URLs | LDAPURLs | ALA_LDAP_URLS | Array/comma-separated list of domain controller URLs |
| Bind User | LDAPBindUser | ALA_LDAP_BIND_USER | Service account for directory binding. Required on Linux (SIMPLE auth); leave empty on Windows to use Kerberos/SSPI. |
| Bind Password | LDAPBindPass | ALA_LDAP_BIND_PASS | Password for the bind user. Required on Linux; leave empty on Windows (Kerberos/SSPI). |
| Base DN | LDAPBaseDN | ALA_LDAP_BASE_DN | Starting point for directory searches |
Optional configuration parameters
| Parameter | YAML Format | Environment Format | Description |
|---|---|---|---|
| TLS Trusted CAs | LDAPTLSTrustedCAs | ALA_LDAP_TLS_TRUSTED_CAS | PEM certificates representing trusted certificate authorities for verifying the LDAP server's certificate. Warning: If specified, the operating system's default trusted CAs will not be used. |
| TLS Server Names | LDAPTLSServerNames | ALA_LDAP_TLS_SERVER_NAMES | Hostname expected in the LDAP server's certificate if different from the URL hostname. Provide one per LDAP URL in the same order. |
| TLS Disable Verification | LDAPTLSDisableVerification | ALA_LDAP_TLS_DISABLE_VERIFICATION | Disable server certificate verification. Warning: Only for development/debugging - vulnerable to man-in-the-middle attacks. Default: false |
| Log Level | LogLevel | ALA_LOG_LEVEL | Logging level: panic, fatal, error, warn, info, debug, or trace. Default: info |
| Switchboard URL | SwitchboardURL | ALA_SWITCHBOARD_URL | URL for the SecureAuth Switchboard service. Use the URL for your environment (see Cloud Server Environments). Default: https://switchboard.acceptto.com (Acceptto Legacy). |
| Authentication Timeout | AuthenticationTimeout | ALA_AUTHENTICATION_TIMEOUT | How long to wait for authentication completion. Format: {number}{unit} (e.g. 5s, 1m). Default: 5s |
| Request Timeout | RequestTimeout | ALA_REQUEST_TIMEOUT | Timeout for LDAP connection requests. Format: {number}{unit}. Default: 5s |
| Request Workers | RequestWorkers | ALA_REQUEST_WORKERS | Number of concurrent workers for processing requests and LDAP lookups. Default: 500 |
| HTTP Proxy | HTTPProxy | ALA_HTTP_PROXY | URL of proxy server for outbound HTTP/HTTPS traffic. |
| Reset Password Bind User | LDAPResetPasswordBindUser | ALA_LDAP_RESET_PASSWORD_BIND_USER | Service account for password reset operations. Required on Linux for password reset; optional on Windows (uses the service account via Kerberos). |
| Reset Password Bind Pass | LDAPResetPasswordBindPass | ALA_LDAP_RESET_PASSWORD_BIND_PASS | Password for the reset password bind user. Required on Linux; not needed on Windows (Kerberos). |
Password change and password reset are only supported over LDAPS (LDAP over SSL) connections.
Cloud Server Environments
SecureAuth operates multiple cloud environments. Configure the agent to connect to the environment for your deployment. The Switchboard URL and, if you enable sync, the sync endpoints must all point to the same environment.
| Environment | Switchboard URL | Base API URL |
|---|---|---|
| CIAM US | https://switchboard.services.us.connect.secureauth.com | https://workforce.services.us.connect.secureauth.com |
| CIAM EU | https://switchboard.services.eu.connect.secureauth.com | https://workforce.services.eu.connect.secureauth.com |
| Acceptto Legacy | https://switchboard.acceptto.com | https://mfa.acceptto.com |
| Development | https://switchboard.eguardian.io | https://dev.eguardian.io |
For example, to connect the agent to the CIAM US environment:
ALA_SWITCHBOARD_URL=https://switchboard.services.us.connect.secureauth.com
When you enable sync, configure the sync endpoints for the same environment. See Active Directory Sync configuration.
Accessing LDAPS servers via a load balancer
Some deployments place a pool of LDAPS servers behind a load balancer. The agent connects to a single URL (the load balancer), but each backend server may present a certificate with a different hostname, which can cause certificate verification to fail.
To resolve this, use one of the following approaches:
- Terminate TLS at the load balancer so the agent always sees a single certificate. The certificate's subject must match either the load balancer's address or the configured entry in
LDAPTLSServerNames. - Use the same certificate name on each backend server and set that name in
LDAPTLSServerNamesif it isn't the load balancer address. - Add a Subject Alternative Name (SAN) for the load balancer's address to each backend server's certificate, if the servers need distinct certificates.
Service management
Windows
# Start the service
net start "Acceptto LDAP Agent"
# Stop the service
net stop "Acceptto LDAP Agent"
# Restart the service
net stop "Acceptto LDAP Agent" && net start "Acceptto LDAP Agent"
Linux
# Start the service
sudo systemctl start acceptto-ldap-agent
# Stop the service
sudo systemctl stop acceptto-ldap-agent
# Restart the service
sudo systemctl restart acceptto-ldap-agent
# Check service status
sudo systemctl status acceptto-ldap-agent
Active Directory Sync configuration
The LDAP Agent can synchronize users and groups from Active Directory into the SecureAuth cloud directory, so you don't have to provision users manually. Sync uses Microsoft's DirSync control to track changes (creates, updates, and deletes) efficiently and send them to the cloud. Sync is optional and disabled by default.
Sync prerequisites
Before you enable sync, confirm the following:
-
Replicating Directory Changes permission – The account used for sync must have the "Replicating Directory Changes" permission on the domain partition. On Windows with Kerberos/SSPI, this is the service account; on Linux, it's the bind account. Grant it with PowerShell:
dsacls "DC=company,DC=com" /G "DOMAIN\SyncServiceAccount:CA;Replicating Directory Changes"To verify which accounts already have it:
dsacls "DC=company,DC=com" | Select-String "Replicating Directory Changes" -
Direct domain controller access – Point sync at a specific domain controller, such as
ldaps://dc1.company.com:636, not a load-balanced URL. The DirSync cookie is specific to one domain controller, and switching controllers can cause duplicate events or an unexpected full resync. -
Partition root as the Base DN – The sync Base DN must be a partition root (for example,
DC=company,DC=com), not an OU. DirSync cannot search from an OU.
Sync configuration reference
All sync settings are optional when sync is disabled (the default). On Windows with Kerberos/SSPI, sync uses the Windows service account automatically, so no bind credentials are needed. On Linux, sync requires explicit bind credentials with the "Replicating Directory Changes" permission.
| Parameter | YAML Format | Environment Format | Description |
|---|---|---|---|
| Enable sync | Sync.Enabled | ALA_SYNC_ENABLED | Enable Active Directory synchronization. Default: false. |
| Sync LDAP URL | Sync.LDAPURL | ALA_SYNC_LDAP_URL | LDAP URL for sync operations. Use a specific domain controller, not a load balancer. Default: first URL from LDAPURLs. |
| Sync Bind User | Sync.LDAPBindUser | ALA_SYNC_LDAP_BIND_USER | Bind user for sync. Optional on Windows. Must have the "Replicating Directory Changes" permission. Default: value of LDAPBindUser. |
| Sync Bind Password | Sync.LDAPBindPass | ALA_SYNC_LDAP_BIND_PASS | Password for the sync bind user. Optional on Windows. Default: value of LDAPBindPass. |
| Sync Base DN | Sync.LDAPBaseDN | ALA_SYNC_LDAP_BASE_DN | Base DN for sync. Must be a partition root. Default: value of LDAPBaseDN. |
| Cookie File Path | Sync.CookieFilePath | ALA_SYNC_COOKIE_FILE_PATH | File path for persisting the sync cookie. Default: platform-specific config directory. |
| Poll Interval | Sync.PollInterval | ALA_SYNC_POLL_INTERVAL | Interval between sync operations when caught up. Default: 60s. |
| Catchup Interval | Sync.CatchupInterval | ALA_SYNC_CATCHUP_INTERVAL | Interval when more results are available from Active Directory. Default: 30s. |
| Token Endpoint | Sync.TokenEndpoint | ALA_SYNC_TOKEN_ENDPOINT | OAuth token endpoint for sync authentication. Use the endpoint for your environment (see below). |
| Sync Endpoint | Sync.SyncEndpoint | ALA_SYNC_ENDPOINT | Endpoint where sync data is sent. Use the endpoint for your environment (see below). |
The token and sync endpoints must match the same environment as the agent's Switchboard URL:
| Environment | Token endpoint | Sync endpoint |
|---|---|---|
| CIAM US | https://workforce.services.us.connect.secureauth.com/api/agent/v1/oauth/token | https://workforce.services.us.connect.secureauth.com/api/agent/v1/sync |
| CIAM EU | https://workforce.services.eu.connect.secureauth.com/api/agent/v1/oauth/token | https://workforce.services.eu.connect.secureauth.com/api/agent/v1/sync |
| Acceptto Legacy | https://mfa.acceptto.com/api/agent/v1/oauth/token | https://mfa.acceptto.com/api/agent/v1/sync |
| Development | https://dev.eguardian.io/api/agent/v1/oauth/token | https://dev.eguardian.io/api/agent/v1/sync |
Example sync configuration
Windows (recommended)
On Windows with Kerberos/SSPI, sync configuration is minimal. Add the following to your YAML configuration file:
Sync:
Enabled: true
LDAPURL: ldaps://dc1.company.com:636 # Use a specific DC, not a load balancer
# No credentials needed - uses the Windows service account automatically
# Endpoints for your environment (example: CIAM US)
TokenEndpoint: https://workforce.services.us.connect.secureauth.com/api/agent/v1/oauth/token
SyncEndpoint: https://workforce.services.us.connect.secureauth.com/api/agent/v1/sync
Linux
Add the following to your ldap-agent-config.env file. This example uses the CIAM US environment:
# Enable sync
ALA_SYNC_ENABLED=true
# Use a specific domain controller (not a load balancer)
ALA_SYNC_LDAP_URL=ldaps://dc1.company.com:636
# Required on Linux: an account with "Replicating Directory Changes" permission
ALA_SYNC_LDAP_BIND_USER=sync-service@company.com
ALA_SYNC_LDAP_BIND_PASS=your-sync-password
# Endpoints for the CIAM US environment (must match ALA_SWITCHBOARD_URL)
ALA_SYNC_TOKEN_ENDPOINT=https://workforce.services.us.connect.secureauth.com/api/agent/v1/oauth/token
ALA_SYNC_ENDPOINT=https://workforce.services.us.connect.secureauth.com/api/agent/v1/sync
# Optional: persist the cookie to a mounted volume (see below)
ALA_SYNC_COOKIE_FILE_PATH=/data/dirsync-cookie.json
Cookie persistence with Docker
The sync cookie maintains state between agent restarts. If the cookie is lost, the server returns the correct state on the next sync request, but persisting it locally avoids an unnecessary round-trip on every restart.
When running with Docker, persist the cookie to a volume that survives container restarts. Add a volume mount to your docker-compose.yml:
services:
ldap-agent:
# ... existing configuration ...
volumes:
- ldap-agent-data:/data
volumes:
ldap-agent-data:
Then set the cookie path to that volume:
ALA_SYNC_COOKIE_FILE_PATH=/data/dirsync-cookie.json
Running multiple agent instances
When you deploy multiple LDAP Agent instances for high availability, enable sync on only one of them.
If more than one instance has sync enabled, the instances conflict: when one syncs and updates the cloud state, the others detect a state mismatch and are forced to resync. This causes no data loss, but it wastes resources and adds unnecessary round-trips to the cloud.
Recommended approach:
- Run multiple instances for LDAP query redundancy.
- Enable sync (
Sync.Enabled: trueorALA_SYNC_ENABLED=true) on only one designated instance. - If that instance fails, enable sync on a standby instance.
Troubleshooting common issues
Agent cannot connect to SecureAuth
- Verify Agent ID and Shared Secret are correct
- Check network connectivity to SecureAuth Switchboard
- Review firewall rules
Agent cannot connect to Active Directory
- Verify LDAP URLs are accessible
- Test service account credentials
- Check domain controller availability
Authentication failures
- Verify Base DN is correct
- Check service account permissions in Active Directory
- Review user account status
Check logs
- Windows: Event Viewer and agent log files
- Linux:
sudo journalctl -u acceptto-ldap-agent -f
FAQ
How many users can a single LDAP Agent serve?
Authentications are not compute intensive and a single LDAP Agent can generally serve thousands of users. We are able to provide more precise estimates after reviewing your specific needs.
Once the LDAP Agent requirements are met, what is the typical deployment and configuration effort to connect to Active Directory?
A typical remote or on-site deployment session takes our engineering team two hours start to finish. That is assuming all requirements are met and the team is ready to deploy and configure the agent.
Would we need dedicated VMs for development and staging as well?
Yes. While a single LDAP Agent instance can access development and staging directories stored in separate domains within an Active Directory forest (e.g. by using an Active Directory global catalog), we recommend using separate agent instances for development, staging, and production to maintain proper segregation between these deployments.
Does the LDAP Agent support multiple Active Directory domains and forests?
Yes. A single LDAP Agent may support multiple domains in a forest by using the Active Directory global catalog. Alternatively, multiple agents (or multiple load balanced agent groups) may be deployed -- each configured to serve users from specific domains. In this way, customers with multiple distinct forests may be easily accommodated.
What kind of information does the LDAP Agent send to SecureAuth?
The LDAP Agent acts as a worker waiting for commands from SecureAuth such as performing live user authentications, user lookups and checking the user group membership while enforcing SecureAuth group policies.
Next steps
After deploying the LDAP Agent:
- Connect Active Directory in your workspace: Workforce or B2B, enterprise, partner
- Verify the connection: Workforce flow or B2B/enterprise/partner flow
- Configure authentication policies for your workforce