Capabilities
The Active Directory connector supports automatic account provisioning and deprovisioning. When a new account is created by C1, the account’s password is sent to a vault.
Notes:
- The connector syncs each user’s primary group membership (for example, Domain Users) via the
primaryGroupID attribute. AD does not include primary groups in memberOf, so the connector resolves these automatically.
- The connector supports syncing across multiple AD domains and forests in a single run via
additional-domains configuration.
- gMSA sync is opt-in and requires the
enable-gmsa-sync flag. gMSA provisioning modifies the msDS-GroupMSAMembership security descriptor ACL.
- The connector supports two connection modes: LDAP (default on Linux) and WinLDAP (default on Windows, uses
wldap32.dll for Kerberos/GSSAPI).
- Account provisioning (create/delete) requires LDAPS (
ldaps: true).
- When
sync-scope is set to GlobalCatalog, provisioning is not supported and some profile fields may be unavailable.
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):
Resource actions (on user resources):
Resource actions (on group resources):
Custom PowerShell actions:
You can define additional actions backed by PowerShell scripts in the config file. See Custom PowerShell Actions below.
Resources
Gather Active Directory credentials
To configure the Active Directory connector, you need an Active Directory service account with appropriate permissions. The specific permissions depend on your intended use:
- Sync only: Read access to AD objects
- Entitlement provisioning: Delegated rights to modify group membership
- Account provisioning: Delegated rights to create, delete, and manage user accounts, plus LDAPS enabled
- gMSA provisioning: Permission to modify
msDS-GroupMSAMembership on gMSA objects
The service account also needs Log on as a service permission and Modify access to C:\ProgramData\ConductorOne.
Create a service account
Create a dedicated AD service account for the connector (for example, svc-baton). A standard domain user account with read access is sufficient for sync-only operation.
Grant the service account Log on as a service permission via local or domain Group Policy, depending on your environment.
Entitlement provisioning permissions
For entitlement provisioning support, the service account needs delegated rights to manage group membership.
Open Active Directory Users and Computers (ADUC) or run dsa.msc from the command line.
Right-click on your forest root (or a specific OU if you only want to provision into groups in that OU) and select Delegate Control.
Add the service account running the baton-active-directory service.
From the tasks to delegate, check the box for Modify the membership of a group.
This delegation grants the service account the ability to provision and deprovision access from Active Directory groups, but it excludes special built-in groups like Administrators, Domain Admins, Enterprise Admins, and Schema Admins.
To manage those protected groups, you must grant explicit Write Members permission on each group and update AdminSDHolder to prevent the permission from being removed:
For each protected group: right-click the group, click the Security tab, click Advanced, click Add, select the service account as the principal, and grant Write Members permission.
Run the following PowerShell script from a domain controller with domain admin credentials to ensure AdminSDHolder does not remove the permission after 60 minutes:
Account provisioning permissions
User account provisioning requires ldaps: true in your config.
Open ADUC or run dsa.msc from the command line.
Right-click on your forest root (or a specific OU) and select Delegate Control.
Add the service account running the baton-active-directory service.
From the tasks to delegate, check the box for Create, delete, and manage user accounts.
Done. Next, move on to the connector configuration instructions.
To complete this task, you’ll need:
- The Connector Administrator or Super Administrator role in C1
- An Active Directory service account with the appropriate permissions (see above)
The Active Directory connector is self-hosted only. It runs on a Windows or Linux server in your environment with direct network access to your domain controllers.To get started, follow the Self-hosted tab instructions.
Follow these instructions to use the Active Directory connector, hosted and run in your own environment.Once installed and configured, Baton runs as a Windows service (or Linux daemon). The service maintains contact with C1, syncs and uploads data at regular intervals, and passes that data to the C1 UI for access reviews and access requests.Requirements
- A Windows or Linux server to host
baton-active-directory (minimum: 2-4 vCPU, 4-8 GB RAM)
- Outbound network connectivity to port
443 to your C1 tenant
- An Active Directory service account with appropriate permissions (see above)
- The Connector Administrator or Super Administrator role in C1
Step 1: Set up a new Active Directory connector in C1
In C1, navigate to Integrations > Connectors and click Add connector.
Search for Baton and click Add.
Choose how to set up the new Active Directory connector:
- Add the connector to a currently unmanaged app (select from the list of apps that were discovered in your identity, SSO, or federation provider that aren’t yet managed with C1)
- Add the connector to a managed app (select from the list of existing managed apps)
- Create a new managed app
Set the owner for this connector. You can manage the connector yourself, or choose someone else from the list of C1 users. Setting multiple owners is allowed.If you choose someone else, C1 will notify the new connector owner by email that their help is needed to complete the setup process.
In the Settings area of the page, click Edit.
Click Rotate to generate a new Client ID and Secret.Carefully copy and save these credentials. You will need them when configuring the connector.
Next to the Not Connected label, click on the word Baton to navigate to the application page. Click the pencil icon at the top of the page and rename the application to Active Directory. This updates the application name, connector name, and icon.
Option 1: Windows installer (recommended)
Download the latest baton-ad-setup-*.exe installer from C1.
Run the installer on the host designated to run the connector. The installer prompts for your AD domain, C1 credentials, and connection settings.
The installer writes a YAML config file (with optional DPAPI encryption for secrets), registers a Windows service with auto-restart recovery, and creates Start Menu shortcuts for the GUI Configuration Editor and uninstall.
Option 2: Manual setup
On the host designated to run the connector, create a folder: C:\Program Files\ConductorOne.
Copy baton-active-directory.exe to the ConductorOne folder.
Install and set up the connector by running (from an elevated command prompt):The setup process checks for a config file, opens the GUI config editor if none exists, offers to copy the binary to Program Files, optionally configures a service account, and registers the Windows service with auto-start and recovery.For non-interactive setup, use: baton-active-directory.exe setup -y Grant the service account Modify folder permissions to C:\ProgramData\ConductorOne so it can write to the log file.Failing to grant this permission results in a service start error.
Launch the Services console, locate the service named baton-active-directory, and configure it:
- Double-click to open properties
- Change the Startup type to Automatic
- Navigate to the Log On tab and click This account
- Click Browse, enter your service account name, and click Check Names
- Enter the service account password and confirm it
- Click Apply
- Navigate back to the General tab and click Start
The config file is written to C:\ProgramData\ConductorOne\baton-active-directory\config.yaml:If you make changes to the config file, a service restart is required for the changes to take effect.
The log file is written to C:\ProgramData\ConductorOne\baton-active-directory\baton.log.Connector modes
The connector supports two connection modes:
- LDAP mode (default on Linux): Uses a Go LDAP library. Supports both External Bind (Kerberos/GSSAPI) and Simple Bind authentication.
- WinLDAP mode (default on Windows): Uses Windows
wldap32.dll system calls with GSSAPI authentication. Simple Bind is not supported in this mode.
If LDAP mode does not connect (usually because your AD server requires more secure authentication methods), try mode: winldap in your config.Multi-domain / cross-forest sync
The connector can sync across multiple AD domains and forests in a single run. Add additional trusted domains to your config using native YAML syntax:Each additional domain supports independent connection settings (bind type, credentials, LDAPS, search filters, OU restrictions, read-only mode). Cross-domain group memberships are resolved automatically via Foreign Security Principals.The additional-domains field is YAML-only — it cannot be set via CLI flags or environment variables.
For detailed setup instructions including trust requirements, DNS, LDAPS certificates, and Kerberos configuration, see the multi-domain setup guide.gMSA sync
To sync Group Managed Service Accounts, enable the flag in your config:Each gMSA exposes a password_retrieval entitlement representing which principals are authorized to retrieve the managed password. Grant and Revoke operations modify the gMSA’s msDS-GroupMSAMembership security descriptor ACL.OU filtering
You can restrict which Organizational Units the connector syncs by using skip-ous or only-ous (mutually exclusive):Custom user attributes
By default, the connector syncs a standard set of AD user attributes. Use custom-user-attributes to include additional AD attributes in the user profile for account correlation:Once synced, the specified attributes appear as profile fields on the user in C1 and can be configured as additional usernames for account correlation.Custom PowerShell actions
You can define additional connector actions backed by PowerShell scripts:Each custom action appears alongside the built-in connector actions and can be used in C1 automations. Argument types can be string, int, or bool.Profile push attributes
The update_profile resource action declares the following 23 named string fields in its schema. The platform’s schema-driven UI shows a dedicated input for each. Attributes outside this list (including extensionAttribute1 through extensionAttribute15) must be set via the custom_attributes map field on update_profile, or via the update_user_attrs global action.AD enforces schema constraints on attribute values. For example, the c (country) attribute has a maximum length of 3 characters and expects ISO 3166-1 alpha-2 codes (for example, US, not United States). Constraint violations are logged with each attribute name and value length to aid debugging.
The update_user_attrs global action recognizes the 23 named fields above plus 15 additional aliases (extension_attribute_1 through extension_attribute_15 mapping to extensionAttribute1–extensionAttribute15). Any attribute name not in the combined list is passed through as a raw AD attribute name, allowing direct access to any writable AD attribute.LDAPS configuration
To enable LDAPS, add the following to your config:The ldaps-skip-verify flag only affects go-ldap mode. WinLDAP mode uses the Windows certificate store for certificate validation and is not affected by this setting.
To diagnose LDAPS connectivity issues, use the built-in diagnostic command:This tests DC resolution, TLS handshake, certificate validation, and LDAP bind for all configured domains with detailed error reporting.DPAPI secrets encryption
On Windows, the connector can encrypt sensitive config values (client-id, client-secret, and bind-password) using Windows DPAPI machine-scoped encryption. Encrypted values are prefixed dpapi: in the YAML config and are decrypted transparently at startup. The installer encrypts by default; you can also encrypt an existing config manually:GUI Configuration Editor
The connector includes a native Windows GUI for managing configuration without editing YAML files manually:If installed via the Windows installer, a Configuration Editor shortcut is available in the Start Menu.Authentication
The connector supports two authentication methods, configured via bind-type:
external (default): Uses Kerberos/GSSAPI. The connector authenticates as the service account running the Windows service. No bind-user or bind-password needed.
simple: Uses username/password bind. Requires bind-user (the full DN) and bind-password.
Run baton-active-directory --help to see the full list of configuration flags and environment variables.Step 3: Manage the Windows service
Use the following commands to manage the service (all require administrator privileges):
- To start the service:
baton-active-directory.exe start
- To stop the service:
baton-active-directory.exe stop
- To check the status:
baton-active-directory.exe status
- To remove the service:
baton-active-directory.exe remove (config and binary are preserved)
The connector syncs current data, uploads it to C1, and prints a Task complete! message when finished.
Check that the connector data uploaded correctly. In C1, click Apps. On the Managed apps tab, locate and click the name of the application you added the Active Directory connector to. Active Directory data should be found on the Entitlements and Accounts tabs.
Done. Your Active Directory connector is now pulling access data into C1.
What’s next?
Once your Active Directory connector is synced, you can use C1 to run user access reviews on AD group memberships, enable just-in-time access requests for AD groups and gMSAs, and automate provisioning workflows using connector actions.
Set up account provisioning
The Active Directory connector supports automatic account provisioning and deprovisioning. When C1 creates a new AD user account, the generated password is automatically sent to a vault.
Before you begin, confirm:
- The connector config has
ldaps: true and provisioning: true
- A vault is configured in C1 to receive the generated password
- The service account has delegated rights to create, delete, and manage user accounts (see Account provisioning permissions above)
In C1, navigate to Apps > Managed apps and click the name of your Active Directory application.
Under Accounts management, click Edit next to Provisioning.
From the Connector dropdown, select your Active Directory connector.The mapping fields defined by the connector’s schema appear below the dropdown.
Enter a CEL expression for each field. See Provisioning field reference below for guidance.Click Test next to any field to validate the expression against an existing C1 user. Under Password storage, select the vault where generated passwords should be stored.
Provisioning field reference
The fields below are defined by the AD connector’s account creation schema. CEL expressions reference profile attributes accumulated from connected directory and HR apps using the pattern subject.attributes.<attribute_name>. To see which attributes are available for a given user, navigate to that user’s profile page in C1.
The DN of the new account is assembled by the connector as: CN=<commonName>,<organizationalUnit>,<domain>
Required fields
Organizational Unit and Domain are almost always static strings — they don’t vary per user. Enter them as quoted literals unless your organization places users in different OUs based on a profile attribute such as department.
Optional fields
Additional attributes
The Additional Attributes field accepts a map of raw LDAP attribute names to CEL expressions. Use this to set user attributes beyond what the named fields cover. Common examples:
The manager attribute must be the full Distinguished Name of the manager’s AD account — for example, CN=Jane Doe,OU=Users,DC=example,DC=com. If your source directory exposes the manager’s DN directly, you can map it here. Otherwise, omit it at creation time and set it later using the set_manager connector action.
Tips and gotchas
sAMAccountName has a 20-character limit and cannot contain these characters: / \ [ ] : ; | = , + * ? < > @. If your naming convention could produce values longer than 20 characters, truncate or use an alternative expression.
userPrincipalName must be unique across the entire AD forest. A duplicate UPN causes provisioning to fail with an LDAP constraint violation error.
- Accounts are created disabled by default. Setting
Enabled to false is intentional — C1 sets the account password in a separate LDAP operation after creation. If you set Enabled to true, the account will be enabled at creation but will still have a system-generated password sent to your vault.
- The target OU must already exist. C1 will not create missing OUs. If the OU specified in Organizational Unit doesn’t exist when provisioning runs, the request will fail.
objectClass order matters in LDAP. For standard AD users, ["user"] is sufficient. If your schema requires additional classes, list them in structural hierarchy order (for example, ["top", "person", "organizationalPerson", "user"]).
- Global Catalog scope disables provisioning. If the connector’s
sync-scope is set to GlobalCatalog, account provisioning is not supported. Use the default scope instead.