Skip to main content
CID222 Docs

Active Directory and LDAP problems

Directory sign-in that fails, a bind that will not complete, and sync scopes that import the wrong people or nobody at all.

  • Version: 0.4
  • Role: admin_user
  • Type: troubleshooting

Directory integration fails in two places that need to be told apart before anything else: the bind (can the appliance talk to the directory at all?) and the sync scope (does it import the right people into the right group?). A sign-in refusal can come from either, or from neither.

Note

While the directory is unreachable, local accounts keep working, and content policy and enforcement are unaffected — they never consult the directory. What stops is directory sign-in and group-membership updates, which freeze at their last synced state.

Find your symptom

What you seeRunbook
A user cannot sign in, and you do not yet know whether the account is local or directoryA user cannot sign in
The connection test on the AD/LDAP page failsThe directory cannot be reached or bound
Sign-in says the directory is temporarily unavailableThe directory cannot be reached or bound
A sync scope will not run, or names a group that no longer existsA sync scope will not run
The sync imported some people and removed nobodyA sync scope will not run
Deleting a tenant group is refused because a scope targets itA sync scope will not run
Everyone is signed out at every gateway restartThe token signing secret is a placeholder

Sign-in

A user cannot sign in

Four refusals are deliberately distinguishable — wrong credentials, an inactive account, an account managed by the directory, and a directory that could not be reached — because each needs a different person to act.

Runbookaccess

A user cannot sign in to the dashboard

You might see: Invalid credentials · Account is inactive · Account not found · User not found

Before you start

Checks

  1. 1

    Establish whether this account is local or comes from the directory

    expected · You can say which of the two it is.

  2. 2

    For a directory account, check that the directory answered

    expected · The directory test succeeds.

  3. 3

    Read whether the account is active

    expected · The account is active.

  4. 4

    For a user who signs in and is immediately signed out again, check the token signing secret

    diagnostics · posture.jwtSecretPlaceholder = false

The bind

The directory cannot be reached or bound

The gateway refuses to attempt a bind unless URL, bind DN and base DN are all present, so an empty field fails instantly and looks exactly like a wrong password. Two other refusals are security properties rather than faults: the bind password is resolved from the encrypted store, then LDAP_BIND_PASSWORD_FILE, then LDAP_BIND_PASSWORD; and the stored password is only ever sent to the host it was saved against, so testing a different URL requires retyping it.

Note

The stored bind password is encrypted with a key derived from JWT_SECRET. Changing that secret invalidates the stored password, and it must be re-entered — this is easy to miss when rotating the secret for an unrelated reason.

Runbookldap

The directory cannot be reached or bound

You might see: LDAP url, bind DN and base DN must be configured · LDAP bind password file unreadable · Directory authentication is unavailable · The directory server could not be reached, so directory sign-in is temporarily unavailable.

Before you start

Checks

  1. 1

    Read the three fields the connection cannot be attempted without

    expected · All three are non-empty.

  2. 2

    Check where the bind password is coming from

    expected · One of the three resolves to a password the directory accepts.

  3. 3

    If you are testing a URL you just typed, check whether you also re-entered the password

    expected · Either the URL is unchanged, or you typed the bind password into the test form.

  4. 4

    Check that the directory host answers from the appliance

    expected · The port answers and, for LDAPS, the certificate chain validates.

Sync scopes

A sync scope will not run

A scope maps a directory group into a CID tenant group and assigns a role. Three of its refusals are protective: a target group that has been deleted, a role that may not be granted from a directory scope at all, and a directory that answered only part of the query.

On a partial answer the sync imports and updates what it saw and removes nobody — removing on incomplete data would deprovision people whose entries simply were not returned.

Runbookldap

A directory sync scope will not run, or imports the wrong people

You might see: Sync scope not found · This sync scope is disabled. Re-enable it before syncing. · Sync scope is mapped to a CID tenant group that no longer exists · Sync scope would assign a role which cannot be granted from a directory scope

Before you start

Checks

  1. 1

    Read the scope's state before anything else

    expected · The scope is enabled.

  2. 2

    Check the CID tenant group the scope maps into

    expected · The target group exists.

  3. 3

    Read the role the scope assigns

    expected · The role is one of those the message lists as allowed.

  4. 4

    Read the result counts of the last run

    expected · The run completed rather than reporting a partial answer.

What the docs cannot tell you

  • Whether the directory itself is refusing the bind or the network is dropping it. The gateway sees a failed connection in both cases. Confirm from the domain controller's own logs.
  • Whether a size or time limit is truncating the search. The partial-answer path is detected, but the limit that caused it lives on the directory server.

Last updated on

On this page

Download PDF