FreeIPA
Preparation
The following placeholders will be used:
svc_authentik
is the name of the bind account.freeipa.company
is the Name of the domain.ipa1.freeipa.company
is the Name of the FreeIPA server.
FreeIPA Setup
-
Log into FreeIPA.
-
Create a user in FreeIPA, matching your naming scheme. Provide a strong password, example generation methods:
pwgen 64 1
oropenssl rand -base64 36
. Once done clickAdd and Edit
. -
In the user management screen, select the Roles tab.
-
Add a role that has privileges to change user passwords, the default
User Administrators
role is sufficient. This is needed to support password resets from within authentik. -
By default, if an administrator account resets a user's password in FreeIPA the user's password expires after the first use and must be reset again. This is a security feature to ensure password complexity and history policies are enforced. To bypass this feature for a more seamless experience, you can make the following modification on each of your FreeIPA servers:
$ ldapmodify -x -D "cn=Directory Manager" -W -h ipa1.freeipa.company -p 389
dn: cn=ipa_pwd_extop,cn=plugins,cn=config
changetype: modify
add: passSyncManagersDNs
passSyncManagersDNs: uid=svc_authentik,cn=users,cn=accounts,dc=freeipa,dc=company
Additional info: 22.1.2. Enabling Password Reset Without Prompting for a Password Change at the Next Login
authentik Setup
In authentik, create a new LDAP Source in Resources -> Sources.
Use these settings:
-
Server URI:
ldaps://ipa1.freeipa.company
You can specify multiple servers by separating URIs with a comma, like
ldap://ipa1.freeipa.company,ldap://ipa2.freeipa.company
.When using a DNS entry with multiple Records, authentik will select a random entry when first connecting.
-
Bind CN:
uid=svc_authentik,cn=users,cn=accounts,dc=freeipa,dc=company
-
Bind Password: The password you've given the user above
-
Base DN:
dc=freeipa,dc=company
-
Property mappings: Control/Command-select all Mappings which start with "authentik default LDAP" and "authentik default OpenLDAP"
-
Group property mappings: Select "authentik default OpenLDAP Mapping: cn"
Additional settings:
-
Group: If selected, all synchronized groups will be given this group as a parent.
-
Addition User/Group DN:
cn=users,cn=accounts
-
Addition Group DN:
cn=groups,cn=accounts
-
User object filter:
(objectClass=person)
-
Group object filter:
(objectClass=groupofnames)
-
Group membership field:
member
-
Object uniqueness field:
ipaUniqueID
After you save the source, you can kick off a synchronization by navigating to the source, clicking on the "Sync" tab, and clicking the "Run sync again" button.
Lastly, verify that the "User database + LDAP password" backend is selected in the "Password Stage" under Flows -> Stages.