diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 2777e00..617246d 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -120,7 +120,7 @@ bare-metal / advanced standalone use; most deployments should use the file. - Health check: `http://localhost:3001/health` → `{"status":"ok"}` - OIDC discovery: `http://localhost:3001/.well-known/openid-configuration` - LDAP (internal, app↔slapd): `ldap://localhost:389` (not mapped to the host) -- LDAPS (for legacy apps / direct binds): `ldaps://:636` (TLS) +- LDAPS (direct binds: Linux hosts, LDAP-native apps): `ldaps://:636` (TLS) ### API tokens (personal access tokens) @@ -483,8 +483,8 @@ netstat -tlnp | grep 389 2. **Use LDAPS / StartTLS** for any LDAP connection that crosses the network. The bundled slapd listens on `ldaps:///` (636, TLS) and `ldap:///` (389, plain + StartTLS); port 389 is not mapped to the host by default so LAN clients can't - bind in cleartext. Direct-LDAP apps (legacy services, `theta42/proxy`) should - use `ldaps://…:636` or StartTLS. + bind in cleartext. Direct-LDAP consumers (Linux hosts, LDAP-native apps, + `theta42/proxy`) should use `ldaps://…:636` or StartTLS. 3. **Persist `JWT_SECRET`** — if the Docker image auto-generates one and you don't set `JWT_SECRET`, issued tokens invalidate on container recreation. 4. **Don't expose the UI's HTTP port to the internet** — terminate TLS at a front diff --git a/Dockerfile.openldap b/Dockerfile.openldap index 2b65fbc..b795690 100644 --- a/Dockerfile.openldap +++ b/Dockerfile.openldap @@ -131,7 +131,8 @@ COPY ops/schema/openssh-lpk.schema /etc/openldap/schema/openssh-lpk.schema # 3001: SSO Manager web interface (HTTP — terminate TLS at the front proxy) # 389: LDAP (plain + StartTLS) — used internally by the app; map to host only # if you want LAN clients to bind without TLS (not recommended). -# 636: LDAPS — for legacy apps / direct LDAP binds over the network (TLS) +# 636: LDAPS — direct LDAP binds over the network (TLS): Linux host auth +# (PAM/SSSD, sudo, SSH keys) and LDAP-native apps EXPOSE 3001 389 636 # Health check diff --git a/README.md b/README.md index 6e5f7a2..055bef1 100755 --- a/README.md +++ b/README.md @@ -41,9 +41,10 @@ phone-home, no hosted control plane, and no per-user pricing. - **Web management UI** — manage users, groups, and OAuth clients from a browser; invite and password-reset flows over email; user self-service for profile and API tokens. -- **LDAPS for legacy apps** — apps that bind LDAP directly (Gitea, Emby, and - anything else that speaks LDAP) use LDAPS (636) or StartTLS against the same - directory, so you don't maintain a second user database for them. +- **Direct LDAP binds** — Linux hosts (PAM/SSSD login, LDAP-backed `sudo` + rules, SSH public keys via openssh-lpk) and LDAP-native apps (Gitea, Emby, + and anything else that speaks LDAP) use LDAPS (636) or StartTLS against the + same directory, so you don't maintain a second user database for them. - **Personal access tokens** — any user can mint a long-lived bearer token to drive the management API from scripts or CI, scoped to their own permissions. - **All-in-one Docker image** — app + OpenLDAP + Redis in one container, or run @@ -151,7 +152,7 @@ details, including env var overrides (`LDAP_BASE_DN`, `SKIP_LDAP`, ...), in ┌────────────────────────┐ │ OpenLDAP (slapd) │ │ - users / groups │ -│ - LDAPS :636 │─── legacy apps bind directly +│ - LDAPS :636 │─── Linux hosts + LDAP apps bind directly │ - StartTLS :389 │ └────────────────────────┘ ``` diff --git a/docs/index.md b/docs/index.md index 123c4d7..ac495e0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -52,8 +52,9 @@ backend, that's the niche. - **Web management UI** — users, groups, and OAuth clients from a browser; invite and password-reset flows over email; self-service profile + API tokens. -- **LDAPS for legacy apps** — anything that binds LDAP directly (Gitea, - Emby, …) uses LDAPS/StartTLS against the same directory. +- **Direct LDAP binds** — anything that binds LDAP directly (Linux hosts + via PAM/SSSD, Gitea, Emby, …) uses LDAPS/StartTLS against the same + directory. - **All-in-one Docker image** — app + OpenLDAP + Redis in one container, or run the pieces separately via `app_*` env config. - **Geo-Location Scaling** — built-in support for N-Way Multi-Master OpenLDAP [replication](replication.html) across physical sites. diff --git a/docs/ldap.md b/docs/ldap.md index dca32be..8cdd785 100644 --- a/docs/ldap.md +++ b/docs/ldap.md @@ -14,8 +14,9 @@ description: SSO Manager's bundled OpenLDAP directory — schema, service accoun SSO Manager runs an OpenLDAP directory holding your users and groups. The app authenticates against it over `localhost:389` (inside the all-in-one container) -and exposes **LDAPS** (`ldaps://…:636`, TLS) for legacy apps that bind LDAP -directly — Gitea, Emby, the theta42/proxy, etc. +and exposes **LDAPS** (`ldaps://…:636`, TLS) for anything that binds LDAP +directly — Linux hosts (PAM/SSSD, sudo rules, SSH keys), Gitea, Emby, the +theta42/proxy, etc. ## Directory layout