feat: SSO group autocomplete for per-host SSO allow-lists (v1.34.0)
The per-host "Allowed groups" field suggested only local groups, permission subjects and conf.auth maps. None of those can ever match an SSO-gated host: its allow-list is checked against the `groups` claim the SSO issues (utils/host_sso.js), so only SSO groups are candidates. Adds a conf.sso block (url + read-only apiToken, minted by theta-suite's bootstrap) and a cached /api/group lookup merged into the suggestions. Degrades silently to the previous local-only list when unset, and never fails the request. Authenticates with `Authorization: Bearer <token>` -- the SSO's `auth-token` header is for browser session UUIDs and rejects a minted API token. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -42,6 +42,18 @@ module.exports = {
|
||||
usernameClaim: 'preferred_username',
|
||||
},
|
||||
|
||||
// Read-only access to the SSO's management API, used to populate the
|
||||
// per-host SSO allow-list autocomplete with the directory's actual groups.
|
||||
// A host gated on SSO matches its allow-list against the `groups` claim the
|
||||
// SSO issues, so only SSO groups can ever match -- without this the field
|
||||
// can only suggest the proxy's own local groups. `apiToken` is a machine
|
||||
// token minted by theta-suite's bootstrap; leaving it blank simply falls
|
||||
// back to local-only suggestions.
|
||||
sso: {
|
||||
url: 'http://sso-manager:3001',
|
||||
apiToken: '',
|
||||
},
|
||||
|
||||
// Direct LDAP user lookups. ldaps:// + rejectUnauthorized:false for a
|
||||
// self-signed cert (the SSO's default), or set tlsOptions.ca to a CA path
|
||||
// for strict verification. bindPassword MUST match the
|
||||
|
||||
Reference in New Issue
Block a user