Parent
Problem
SkillHub still has no LDAP/AD credential adapter that enters the frozen unified identity boundary. PR #437 authenticates through a local-login fallback and can reuse an existing platform account by email, so it cannot be merged safely.
Scope
Implement PR 7 from docs/21-unified-identity-federation-design.md:
- A dedicated Credential Provider adapter; do not modify local-password semantics.
- Service bind/search, exactly-one match, user-DN bind, and attribute read outside the platform database transaction.
- OpenLDAP
entryUUID and Active Directory objectGUID stable subjects.
- Configurable subject and profile attribute mapping; username, DN, and email are not default identity keys.
- Typed subject/alias output through
ProviderAuthenticationResult and the shared ExternalIdentityLoginService.
- No email-based implicit link or account takeover; collisions return the shared link-required outcome.
- LDAPS and StartTLS support; no production trust-all escape hatch.
- Escaped search filters, bounded response sizes, explicit connection/read/pool timeouts, and stable safe error codes.
- Disabled or incomplete providers do not initialize a client, make network calls, or appear in
/api/v1/auth/methods.
- Default-off Compose, Helm, and Kustomize configuration plus operator documentation.
- Audit, low-cardinality metrics, and secret/log redaction.
Acceptance
- Provider Conformance Kit passes.
- Real OpenLDAP tests cover plain LDAP, LDAPS, StartTLS, first/repeat login, username change, profile policy, email collision, missing
entryUUID, multiple results, injection input, invalid password, unavailable directory, and timeouts.
- Fixed AD
objectGUID byte-order fixtures pass.
- Existing GitHub/GitLab/OIDC, CAS, local password, Device Flow, API token, link, and account-merge behavior remains compatible.
- Upgrade from the current
big-main database/session state is additive and rollback-safe.
- The exact feature commit is merged only to
big-main, built into a revision-labelled image, and validated on the Hong Kong test machine without rebooting the host.
- Test resources, images, and caches created by this run are cleaned without touching Multica or existing runtime resources.
Delivery
Target a dedicated PR at big-main. Do not merge to main without explicit maintainer confirmation.
Parent
big-main.Problem
SkillHub still has no LDAP/AD credential adapter that enters the frozen unified identity boundary. PR #437 authenticates through a local-login fallback and can reuse an existing platform account by email, so it cannot be merged safely.
Scope
Implement PR 7 from
docs/21-unified-identity-federation-design.md:entryUUIDand Active DirectoryobjectGUIDstable subjects.ProviderAuthenticationResultand the sharedExternalIdentityLoginService./api/v1/auth/methods.Acceptance
entryUUID, multiple results, injection input, invalid password, unavailable directory, and timeouts.objectGUIDbyte-order fixtures pass.big-maindatabase/session state is additive and rollback-safe.big-main, built into a revision-labelled image, and validated on the Hong Kong test machine without rebooting the host.Delivery
Target a dedicated PR at
big-main. Do not merge tomainwithout explicit maintainer confirmation.