[Feature] Add a read-only LDAP and Active Directory address connector #15

Closed
opened 2026-08-02 07:07:22 +02:00 by zemion · 1 comment
Owner

Goal

Expose LDAP/Active Directory directory contacts through the Addresses model without turning Addresses into an identity or access master.

Parent: #8. Depends conceptually on GovOPlaN/govoplan-connectors#8 for shared diagnostics/dry-run conventions.

Direction And Boundary

  • Baseline direction is read-only / one-way import. Remote writes are explicitly out of scope until a separate governed write contract is accepted.
  • Addresses owns normalized contact projections, source revisions, quality, provenance, and recipient capabilities.
  • LDAP/AD remains authoritative for directory objects; IDM/Access integrations are optional and no hard module dependency is allowed.

Scope

  • LDAPS/start-TLS endpoint and reusable credential-envelope references; never persist plaintext secrets or emit them in diagnostics.
  • Bounded connection test, base-DN discovery, paged search, object/filter selection, and schema mapping profile.
  • Stable external object reference and revision/fingerprint handling with explicit full-scan fallback when incremental state is unavailable.
  • Dry-run creates/updates/deletes with redacted samples before applying changes.
  • Tombstones, source freshness, retry/backoff, timeout, and actionable diagnostics through the existing sync-source model.
  • Mapping for names, organization/title, email, phone, postal data, tags, provider links, and field provenance.
  • Tests against a disposable LDAP fixture, including TLS failure, pagination, malformed values, deletion, and idempotent reruns.
  • Admin/user documentation for setup, authority, freshness, and read-only behavior.

Acceptance Criteria

  • A configured directory can be discovered, previewed, imported, refreshed, and diagnosed without direct module-to-module imports.
  • Preview is bounded and reports planned effects without mutating contacts.
  • Repeated unchanged runs create no duplicate contacts or effects.
  • Missing/unavailable LDAP leaves existing local projections explicitly stale rather than silently deleting them.
  • Every retained field identifies its LDAP source object and revision.
## Goal Expose LDAP/Active Directory directory contacts through the Addresses model without turning Addresses into an identity or access master. Parent: #8. Depends conceptually on GovOPlaN/govoplan-connectors#8 for shared diagnostics/dry-run conventions. ## Direction And Boundary - Baseline direction is read-only / one-way import. Remote writes are explicitly out of scope until a separate governed write contract is accepted. - Addresses owns normalized contact projections, source revisions, quality, provenance, and recipient capabilities. - LDAP/AD remains authoritative for directory objects; IDM/Access integrations are optional and no hard module dependency is allowed. ## Scope - LDAPS/start-TLS endpoint and reusable credential-envelope references; never persist plaintext secrets or emit them in diagnostics. - Bounded connection test, base-DN discovery, paged search, object/filter selection, and schema mapping profile. - Stable external object reference and revision/fingerprint handling with explicit full-scan fallback when incremental state is unavailable. - Dry-run creates/updates/deletes with redacted samples before applying changes. - Tombstones, source freshness, retry/backoff, timeout, and actionable diagnostics through the existing sync-source model. - Mapping for names, organization/title, email, phone, postal data, tags, provider links, and field provenance. - Tests against a disposable LDAP fixture, including TLS failure, pagination, malformed values, deletion, and idempotent reruns. - Admin/user documentation for setup, authority, freshness, and read-only behavior. ## Acceptance Criteria - A configured directory can be discovered, previewed, imported, refreshed, and diagnosed without direct module-to-module imports. - Preview is bounded and reports planned effects without mutating contacts. - Repeated unchanged runs create no duplicate contacts or effects. - Missing/unavailable LDAP leaves existing local projections explicitly stale rather than silently deleting them. - Every retained field identifies its LDAP source object and revision.
Author
Owner

Implemented in 2c42102 and pushed to main. Added read-only LDAP/AD discovery and synchronization using LDAPS or StartTLS, reusable credential-envelope references, bounded paged search, explicit attribute maps, stable source identity/revision/provenance, non-mutating preview, and guarded tombstones only after a complete successful search. Provider health/diagnostics and Address Book configuration UI are included. Verification: all 45 Addresses tests, focused LDAP tests, Ruff, WebUI production build/bundle budget, and diff checks pass.

Implemented in 2c42102 and pushed to main. Added read-only LDAP/AD discovery and synchronization using LDAPS or StartTLS, reusable credential-envelope references, bounded paged search, explicit attribute maps, stable source identity/revision/provenance, non-mutating preview, and guarded tombstones only after a complete successful search. Provider health/diagnostics and Address Book configuration UI are included. Verification: all 45 Addresses tests, focused LDAP tests, Ruff, WebUI production build/bundle budget, and diff checks pass.
zemion removed the codex/ready
status
ready
labels 2026-08-02 15:40:13 +02:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GovOPlaN/govoplan-addresses#15