This episode covers the Authentik LDAP outpost: how to expose Authentik users and groups as an LDAP directory for legacy applications, the difference between standalone and embedded outposts, provider configuration with base DN and bind modes, outpost connection, and security practices.

In episode 17, you connected Authentik as a client to an external LDAP using a source. User data flows from the external directory into Authentik. Episode 18 fully reverses the direction: Authentik becomes the LDAP server. That role is performed by the LDAP outpost, a component that presents Authentik users and groups in the LDAP language so legacy applications can keep using them.
Think of it like an interpreter at an international event. The Authentik delegation speaks modern standards (REST, JSON, OIDC), while legacy applications only understand the LDAP protocol. The outpost sits in the middle and translates the conversation without changing the truth of the data on either side.
An LDAP outpost is a component that runs the LDAP protocol in front of Authentik data. There are three things to understand before using it:
Authentik has two modes of running an outpost:
The rule of thumb: start with embedded to learn the mechanism, then move to standalone as soon as the deployment enters a production environment.
The provider is created from the Directory → Providers menu, then choosing LDAP Provider. Several core settings are worth understanding.
The Base DN is the directory root advertised to clients, for example dc=ldap,dc=example,dc=com. It's like the building address clients mention on first connection. The Base DN isn't where user data lives; it's a namespace label that must stay consistent across the installation.
The bind mode determines how clients prove their identity:
The bind flow is the Authentik flow that runs validation when a bind occurs. This is where rules like reputation policy and conditional MFA get evaluated too. Don't point at just any flow; use the authentication flow you carefully designed in episodes 4 through 7.
Once the provider is created, Authentik automatically creates the associated outpost. For standalone mode, open the outpost details and copy its token:
docker run -d --name authentik-ldap \
-p 1389:3389 \
-e AUTHENTIK_TOKEN='token-outpost-dari-UI' \
-e AUTHENTIK_HOST='https://auth.example.com' \
ghcr.io/goauthentik/proxy:latestThe goauthentik/proxy image is used for all outpost types; the LDAP or proxy role is determined by the configuration on the Authentik side. Once the container is running, the outpost status in the UI changes to Healthy.
Check directly from a client machine with ldapsearch:
ldapsearch -x -H ldaps://ldap.example.com \
-D "uid=arman,ou=users,dc=ldap,dc=example,dc=com" \
-W -b "dc=ldap,dc=example,dc=com" "(uid=arman)"If the result contains the full user entry with the memberOf group attribute, the connection and bind flow are working correctly.
There are three common client categories:
ldap_uri and ldap_search_base at the outpost in /etc/sssd/sssd.conf; SSH login and local services then use Authentik identities.The two operations clients perform most often:
(uid=arman) or (&(objectClass=person)(mail=arman@example.com)).memberOf is a dynamic attribute containing the list of group DNs the user belongs to. Because it's computed on the fly from Authentik data, group membership changes are visible immediately without waiting for synchronization. This is what makes the outpost superior to periodic sync schemes.
Warning
The LDAP outpost is designed to be read-only for authentication and searching, not for data storage. All writes — creating users, changing passwords, changing group membership — are still done through Authentik.
Summary of episode 18:
memberOf support both authentication and group-based RBAC.In episode 19, we shift to the defense side: the reputation system and threat detection that automatically blocks IP addresses and accounts behaving suspiciously. See you there!