LDAP
LDAP authentication configuration lets users log in to IDE Services with credentials that are stored in a third-party directory service, such as Microsoft Active Directory or OpenLDAP. You can configure a connection to use the standard LDAP scheme or LDAPS over SSL.
Prerequisites
You have a directory service set up for your organization.
You have a server configuration file created for your IDE Services instance: application.yaml or values.yaml (for a Kubernetes Helm installation).
If you are going to connect to the directory service over SSL, make sure to import the trusted SSL certificate for your LDAPS server before establishing the connection.
Import the SSL certificate to javax.net.ssl.trustStore which is defined in your environment.
If there are any intermediate certificates between the server’s SSL certificate and the root CA certificate, upload a file that includes the full certificate chain.
Initial setup
To set up the connection with the directory service, add the following parameters to your IDE Services Server configuration file (application.yaml or values.yaml)
Enable LDAP
Specify your LDAP server URL
Example for standard LDAP connection:
Example for LDAPS over SSL:
Specify base DN
base-dn defines the root distinguished name (DN) of the LDAP subtree used as the starting point for all LDAP queries (e.g., user and group lookups).
Set this to the top-level organizational unit or domain where user and group entries are stored. Ensure the specified subtree includes all relevant entries needed for authentication and authorization.
Example:
Specify initial administrators
Alternatively, you can import administrators as described in the Group sync and import section.
Internal tokens
IDE Services manages the internal JWT token to support sessions. For this purpose, it is required to generate an RSA key pair.
Generate an RSA key pair
Run the following command:
Specify internal tokens
Specify the private and public keys you have generated earlier and associated parameters in your IDE Services Server configuration file (application.yaml or values.yaml)
Parameter | Description |
|---|---|
| Specify the duration for which the JWT token, issued after a successful login, remains valid. This token is primarily used for making authenticated calls to IDE Services. |
| Specify the duration for which the Refresh JWT token remains valid. The refresh token is used to renew the primary JWT token without requiring re-authentication via LDAP. If the refresh token expires (30 days by default), the user will need to re-authenticate via LDAP. |
| Provide the content of the private_key_pkcs8.pem file. This is a private key that will be used to sign internal JWT tokens. |
| Provide the content of the public_key.pem file. This is a public key that will be used to validate internal JWT tokens. |
Parameter | Description |
|---|---|
| Specify the duration for which the JWT token, issued after a successful login, remains valid. This token is primarily used for making authenticated calls to IDE Services. |
| Specify the duration for which the Refresh JWT token remains valid. The refresh token is used to renew the primary JWT token without requiring re-authentication via LDAP. If the refresh token expires (30 days by default), the user will need to re-authenticate via LDAP. |
| Provide the content of the private_key_pkcs8.pem file. This is a private key that will be used to sign internal JWT tokens. |
| Provide the content of the public_key.pem file. This is a public key that will be used to validate internal JWT tokens. |
Bind account
Authentication is handled using the Search and Bind method which requires you to have a dedicated service account — known as bind account — on the LDAP server with permission to search the directory and read user attributes.
When a user tries to log in, the system first uses the bind account to connect to the directory. It then searches for the user’s LDAP entry using a specific attribute — such as username, email address, or another unique identifier. Once the user is found, the system attempts a second bind using the found DN and the password the user provided. This setup allows users to log in with familiar identifiers (like email or username), without needing to provide their Distinguished Name (DN).
Specify bind account settings
Add the following parameters to your IDE Services Server configuration file (application.yaml or values.yaml)
Example:
Parameter | Description |
|---|---|
| Distinguished Name (DN) of the service account used by IDE Services to connect and perform LDAP operations (e.g., searching users and groups).
|
| Password for the service account specified in
|
| Specifies a base LDAP filter to identify user entries during search and authentication operations. Applied as-is in all LDAP queries involving user lookup.
Ensure this filter accurately reflects how user entries are structured in your directory schema. |
| Specifies the LDAP attribute used to identify users by their login name.
Ensure the attribute uniquely identifies user entries within the search scope. |
| Optional DN fragment prepended to
|
| Specifies the LDAP attribute that contains the user's email address.
Must match the schema used in your LDAP directory. |
Parameter | Description |
|---|---|
| Distinguished Name (DN) of the service account used by IDE Services to connect and perform LDAP operations (e.g., searching users and groups).
|
| Password for the service account specified in
|
| Specifies a base LDAP filter to identify user entries during search and authentication operations. Applied as-is in all LDAP queries involving user lookup.
Ensure this filter accurately reflects how user entries are structured in your directory schema. |
| Specifies the LDAP attribute used to identify users by their login name.
Ensure the attribute uniquely identifies user entries within the search scope. |
| Optional DN fragment prepended to
|
| Specifies the LDAP attribute that contains the user's email address.
Must match the schema used in your LDAP directory. |
Group sync and import
You can configure IDE Services with LDAP for user management in two ways:
Synchronization Mode — Users and group memberships are imported from LDAP on a defined schedule.
Authentication-Only Mode — Users are created on-demand upon successful login, no scheduled synchronization is performed.
Configure the required behavior by adding specific parameters to your IDE Services Server configuration file (application.yaml or values.yaml)
Synchronization mode
In this mode, the application periodically synchronizes user data and group memberships from the LDAP directory based on the distinguished names (DNs) of LDAP groups specified in the configuration. In addition to scheduled imports, users can also be imported or created automatically upon login.
Example:
Users who are members of the specified LDAP groups are updated on every login and are also imported or updated according to the configured schedule.
Users not yet imported may still be created at login time, and their group memberships can be assigned on the fly, even if
create-user-on-loginis disabled.LDAP directory serves as the single source for user data. Group memberships are kept in sync, and user records become read-only in the IDE Services user interface.
Group membership is evaluated based on the attribute specified in
user-group-membership-attribute(e.g.,memberOf).Users listed in
admin-groupsare granted elevated privileges within IDE Services.
Authentication-only mode
In this mode, the application does not perform scheduled synchronization of users or groups. Instead, user accounts are created dynamically the first time a user successfully authenticates via LDAP.
Example:
Users are not imported from LDAP groups on a schedule.
User records are created on-demand when a user logs in for the first time and passes authentication.
No LDAP group membership is used for assigning roles unless explicitly resolved during login.
Best suited for setups where LDAP is used solely for authentication, and user provisioning is handled within IDE Services.
Parameter | Description |
|---|---|
| Enables automatic creation of a user record upon successful LDAP authentication, if the user does not yet exist in the system.
This option is recommended for Authentication-Only Mode when |
| Specifies the LDAP attribute on the user entry that lists the groups the user belongs to.
This attribute is used to resolve group-to-user associations when importing users or assigning roles based on group membership. |
| Controls whether periodic synchronization of users and groups from LDAP is enabled.
|
| Specifies the source system for user synchronization. Set this value to
|
| Defines the cron expression for how frequently the LDAP user import job runs. Set the frequency to align with your LDAP server performance and load handling. The schedule follows standard cron syntax with six fields (seconds may be required depending on system implementation). Examples:
All users matching the configured |
| Lists the LDAP groups to be used for user role mapping and filtering during synchronization.
Group identifiers should be specified using relative distinguished names (DNs), excluding the base DN (specified by the For example, |
Users are not imported from LDAP groups on a schedule.
User records are created on-demand when a user logs in for the first time and passes authentication.
No LDAP group membership is used for assigning roles unless explicitly resolved during login.
Best suited for setups where LDAP is used solely for authentication, and user provisioning is handled within IDE Services.
Parameter | Description |
|---|---|
| Enables automatic creation of a user record upon successful LDAP authentication, if the user does not yet exist in the system.
This option is recommended for Authentication-Only Mode when |
| Specifies the LDAP attribute on the user entry that lists the groups the user belongs to.
This attribute is used to resolve group-to-user associations when importing users or assigning roles based on group membership. |
| Controls whether periodic synchronization of users and groups from LDAP is enabled.
|
| Specifies the source system for user synchronization. Set this value to
|
| Defines the cron expression for how frequently the LDAP user import job runs. Set the frequency to align with your LDAP server performance and load handling. The schedule follows standard cron syntax with six fields (seconds may be required depending on system implementation). Examples:
All users matching the configured |
| Lists the LDAP groups to be used for user role mapping and filtering during synchronization.
Group identifiers should be specified using relative distinguished names (DNs), excluding the base DN (specified by the For example, |
Prevent brute-force attacks with rate limiting
To protect against brute-force login attempts, the IDE Services applies rate limiting using two independent token buckets:
IP-based bucket: Limits authentication attempts from a single IP address within a defined time window.
Login-based bucket: Limits authentication attempts for a specific username within a defined time window.
An authentication attempt is allowed only if both buckets have available tokens. If either is exhausted, the attempt is denied until the corresponding window resets.
Configure the required behavior by adding specific parameters to your IDE Services Server configuration file (application.yaml or values.yaml)
Example:
Parameter | Description |
|---|---|
| Maximum number of authentication attempts allowed for a specific login within the configured time window. Default: |
| Time window over which failed login attempts are counted per username. Default: |
| Maximum number of authentication attempts allowed from a single IP address within the configured time window. Default: |
| Time window over which failed login attempts are counted per IP address. Default: |
Parameter | Description |
|---|---|
| Maximum number of authentication attempts allowed for a specific login within the configured time window. Default: |
| Time window over which failed login attempts are counted per username. Default: |
| Maximum number of authentication attempts allowed from a single IP address within the configured time window. Default: |
| Time window over which failed login attempts are counted per IP address. Default: |
Additional parameters
Parameter | Description |
|---|---|
| Determines how the LDAP client handles referrals returned by the LDAP server. Referrals are pointers to other LDAP servers that may hold the requested data.
This setting is especially relevant in environments using directory forests or where entries may span multiple LDAP servers. Default: |
| Provides a link displayed on the login page for users to contact support if they experience login issues, such as LDAP authentication failures. Can be either:
This link improves user experience by offering immediate help options in case of login errors. |
Parameter | Description |
|---|---|
| Determines how the LDAP client handles referrals returned by the LDAP server. Referrals are pointers to other LDAP servers that may hold the requested data.
This setting is especially relevant in environments using directory forests or where entries may span multiple LDAP servers. Default: |
| Provides a link displayed on the login page for users to contact support if they experience login issues, such as LDAP authentication failures. Can be either:
This link improves user experience by offering immediate help options in case of login errors. |