Agent-Hellboy / Agent-Hellboy/mcp-runtime

feat(auth): make platform login pluggable and add LDAP backend

Aperta
#104 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub
auth(n/z)
Lingua principale
Go
Stelle
6
Fork
1
Merge medio
11h 33m
PR unite (30g)
13

Descrizione

## Summary
Enterprise users often have only AD/LDAP available for user authentication. We should make platform login pluggable so LDAP can be added cleanly without rewriting API auth paths.

## Problem
`/api/auth/login` is currently coupled to password auth in `services/api/platform_auth.go` (`AuthenticatePassword`).

## Proposal
Introduce a pluggable login provider abstraction and ship LDAP as an optional backend.

## Scope
- Add a `LoginProvider` interface and provider registry in `services/api`.
- Refactor `handleLogin` to authenticate through the configured provider(s) instead of hardcoding password auth.
- Keep request auth middleware unchanged (`x-api-key`, user API keys, platform JWT, OIDC JWT).
- Generalize identity upsert in `platform_store` for external providers (provider/subject-based mapping via `auth_identities`).
- Add LDAP provider (optional) with:
- LDAPS or StartTLS
- bind + user search
- group lookup and mapping to platform role (`user`/`admin`)
- clear failure/audit logging paths
- Add config/env validation for LDAP settings.

## Non-goals
- Replacing grants/sessions authorization model.
- Removing current password login flow.

## Acceptance Criteria
- Login works with existing password backend with no behavior regression.
- Login works against configured LDAP directory.
- LDAP-authenticated users receive platform JWT and can use existing runtime APIs.
- Provider identity is persisted using `auth_identities(provider, subject)`.
- Unit tests cover provider selection, login flow, and LDAP error cases.
- Docs updated for new auth config and rollout guidance.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.