feat: add directory adapter

LDAPS directory adapter with certificate verification, allow-listed reads and
writes, escaped filters, password verification and change, password policy
and account state, plus an in-memory fake. Adds the LDAP_* configuration,
python-ldap with its image libraries, the CA file mount and an opt-in live
test for the test OU.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01N3t4WL7bd9bdHHNjEsxzqC
This commit is contained in:
2026-10-17 18:28:50 +02:00
co-authored by Claude Sonnet 5.5
parent 5f72ea8db6
commit 96d3e77161
18 changed files with 1324 additions and 3 deletions
+8
View File
@@ -9,6 +9,7 @@ dependencies = [
"gunicorn>=23.0",
"whitenoise>=6.9",
"tzdata",
"python-ldap>=3.4.4",
]
[dependency-groups]
@@ -29,6 +30,13 @@ env = [
"DATA_DIR=.",
"DEBUG=false",
"LOG_LEVEL=INFO",
"LDAP_SERVER=dc.example.test",
"LDAP_USER_OU_DN=OU=Users,DC=example,DC=test",
"LDAP_BIND_DN=svc@example.test",
"LDAP_BIND_PASSWORD=test-only-service-password",
"LDAP_CA_FILE=pyproject.toml",
"LDAP_PUBLISHER_GROUP_DN=CN=Publishers,OU=Users,DC=example,DC=test",
"LDAP_ADMIN_GROUP_DN=CN=Admins,OU=Users,DC=example,DC=test",
]
[tool.ruff]