Commit Graph
24 Commits
Author SHA1 Message Date
kevinveenbirkenbachandClaude Opus 5.5 c925150848 fix(web-app-openbao): ship the LDAP auth method as an external plugin
OpenBao 2.7 removed the builtin LDAP auth engine from the server binary
(openbao/openbao GH-3882). `bao auth enable ldap` answered
"plugin not found in the catalog: ldap" and the deploy stopped there.

The role now builds its own image. A multi-stage Dockerfile copies the
openbao-plugin-auth-ldap binary out of the image declared as the
`auth-ldap` service entry into /opt/openbao/plugins. A second server
config file, plugins.hcl, names that directory and registers the plugin
declaratively. It sets plugin_auto_register = true explicitly: the image
starts the server with a config directory, and on that path 2.7.1 does
not apply the documented default, so without the line the catalog stays
empty. The Dockerfile sets the file mode in a helper stage instead of
COPY --chmod, which only BuildKit accepts.

The mount is enabled with -plugin-version=latest, so it follows whichever
plugin version the image ships. A mount created by the former builtin
engine is tuned and reloaded onto the plugin, which needs `update` on
sys/plugins/reload/backend in the ansible-admin policy.

The LDAP tasks move into tasks/addons/auth-ldap.yml and the plugin is
declared under meta/addons as a required addon bridged to `ldap`. Its
Playwright spec logs in through the mount and asserts that sys/auth
reports an external running plugin version.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-04 13:25:17 +02:00
evangelostsak 7a4f1104a6 test(web-app-openbao): aggregate the RBAC tier rotation spec 2026-09-12 10:23:00 +02:00
evangelostsak 436525ca24 test(web-app-openbao): prove every RBAC tier by moving biber through the groups in LAM
biber starts in no group and reaches no privileged surface. For each tier the
administrator signs into LAM, adds him to the role group through Multi edit,
and the spec asserts both the policy set he receives and the capability that
tier grants, then removes him and asserts the revoke. One account covers all
three tiers and the grant and revoke are observed rather than assumed.

LAM's group list renders posixGroup entries only, while the RBAC role groups
are groupOfNames under ou=roles, so Multi edit is the surface that reaches
them. It applies the change asynchronously, so the spec polls the resulting
policy set rather than LAM's own progress wording.
2026-09-12 10:22:51 +02:00
evangelostsak 840f59e080 test(web-app-openbao): stop aggregating the retired tier spec 2026-09-12 00:17:33 +02:00
evangelostsak 49201309d5 test(web-app-openbao): retire the account-based RBAC tier spec 2026-09-12 00:17:20 +02:00
evangelostsak 694ee29f46 style(web-app-openbao): drop the narrative comment from the RBAC denial spec 2026-09-11 18:36:24 +02:00
evangelostsak 2149255aaa style(web-app-openbao): drop the narrative comment from the LDAP spec 2026-09-11 18:36:15 +02:00
evangelostsak ce8ad5c97e style(web-app-openbao): drop the narrative comments from the OIDC spec 2026-09-11 18:36:10 +02:00
evangelostsak 3f6a454a53 test(web-app-openbao): aggregate the RBAC tier spec 2026-09-11 18:35:40 +02:00
evangelostsak 754d8bf140 test(web-app-openbao): assert every RBAC tier receives its policy and its capabilities 2026-09-11 18:35:36 +02:00
evangelostsak 10bdd88867 fix(web-app-openbao): give the seal-status requests onion-aware timeouts 2026-09-07 08:40:55 +02:00
evangelostsak dbe6dea7c6 fix(web-app-openbao): give the RBAC denial requests onion-aware timeouts 2026-09-07 08:40:44 +02:00
evangelostsak 5b0ae2444f fix(web-app-openbao): give the LDAP login requests onion-aware timeouts 2026-09-07 08:40:33 +02:00
evangelostsak 18be72ea40 fix(web-app-openbao): give the baseline health request an onion-aware timeout 2026-09-07 08:40:09 +02:00
evangelostsak 302d164112 test(web-app-openbao): assert the seal state and health-code contract 2026-09-07 00:38:42 +02:00
evangelostsak a48210b8e0 test(web-app-openbao): assert privileged paths and metrics are refused publicly 2026-09-07 00:38:16 +02:00
evangelostsak a5056a874a test(web-app-openbao): assert LDAP login maps groups to the expected policy 2026-09-07 00:38:00 +02:00
evangelostsak 930d8a2bc8 test(web-app-openbao): assert the Keycloak OIDC login lands authenticated 2026-09-07 00:37:37 +02:00
evangelostsak 9b84ba7a6d test(web-app-openbao): add administrator persona scenario 2026-09-07 00:37:18 +02:00
evangelostsak 678cb875c4 test(web-app-openbao): add biber persona scenario 2026-09-07 00:36:45 +02:00
evangelostsak d7abde007d test(web-app-openbao): add guest persona scenario 2026-09-07 00:36:09 +02:00
evangelostsak 8fa727a534 test(web-app-openbao): assert reachability and an initialised, unsealed node 2026-09-07 00:35:48 +02:00
evangelostsak e51e5f8c13 feat(web-app-openbao): add Playwright spec aggregator 2026-09-07 00:35:24 +02:00
evangelostsak 5654ece9e1 feat(web-app-openbao): exempt the Playwright tree from the file-layout lint 2026-09-07 00:35:06 +02:00