Merge OAuth Apps + LDAP Info into one tabbed page; add Service Accounts

- OAuth Apps and LDAP Info are both "how do other apps/hosts plug into
  this SSO" concerns -- merged into a single /integrations page with
  tabs, replacing the two separate nav items with one. /oauth-clients
  and /ldap-info 301-redirect there for compat.
- Add a Service Accounts section under the LDAP tab: bind-only LDAP
  identities (organizationalRole + simpleSecurityObject, no
  posixAccount) for apps/hosts, as opposed to real people. Create,
  rotate password, and delete, all from the UI -- previously the only
  such account (theta-env's bootstrap-created cn=ldapclient) was
  invisible to the Users page entirely (filtered out by
  conf.ldap.userFilter) and had no GUI way to see or rotate it; the new
  ServiceAccount model uses the exact same objectClasses bootstrap.js
  already creates cn=ldapclient with, so it recognizes and manages that
  account too, not just ones created through this UI.
- The ldap-client bash snippet now points at "create one under Service
  Accounts above" instead of a bare textual example.

Verified against a real LDAP server (not just the dev sandbox's usual
unreachable one): created a service account, confirmed it binds
successfully with the generated password, rotated its password, and
deleted it.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 19:57:32 -04:00
parent babbec98c0
commit 0b701dfc6f
8 changed files with 816 additions and 558 deletions
+4 -10
View File
@@ -50,16 +50,10 @@
Groups
</a>
</li>
<li class="nav-item group-required group-required-app_sso_admin">
<a class="nav-link" href="/oauth-clients">
<i class="fa-solid fa-key"></i>
OAuth Apps
</a>
</li>
<li class="nav-item group-required group-required-app_sso_admin">
<a class="nav-link" href="/ldap-info">
<i class="fa-solid fa-network-wired"></i>
LDAP Info
<li class="nav-item group-required group-required-app_sso_admin group-required-app_sso_oauth_admin">
<a class="nav-link" href="/integrations">
<i class="fa-solid fa-plug"></i>
Integrations
</a>
</li>
<li class="nav-item group-required group-required-app_sso_admin group-required-app_sso_invite">