Skip to main content
x-zenith.sign_in defines callback paths and optional owner account linking. The app must configure its own OIDC client.

Callback paths

Callback paths are root-relative, such as /auth/zenith/callback. Zenith combines each path with the deployment’s canonical Zenith origin and any verified custom-domain origin. Unverified domains are excluded. The authorization request must use an exact registered redirect URI. Paths cannot contain a different origin, a leading //, wildcards, backslashes, whitespace, queries, or fragments. Encoded wildcards, backslashes, control characters, and leading // also fail validation. An empty list or duplicate path fails validation. Zenith uses the current catalogue name and callback paths for automatic registration. Explicit client registration overrides those values for that deployment. Credentials alone do not enable authorization without configured callbacks.

Owner account linking

owner_id_env names the input that supplies the initial local account ID. The following declaration uses the same ID as the owner’s OIDC sub:
The named declaration must have input. It cannot have generate, template, alias, or transform. An undeclared name or a computed or transformed input fails validation. input.default_template is allowed. For a fresh deployment, Zenith pins this input to the owner’s immutable Zenith customer ID. Configuration changes cannot replace that pinned value. Existing administrator identifiers are preserved. Zenith does not create the local account or link it to the OIDC subject.

OIDC credentials

OIDC built-ins resolve independently of sign_in. Authorization requires configured callbacks. An x-zenith.env alias injects a built-in into the declared services.

Protocol and claims

Discovery is available at the issuer followed by /.well-known/openid-configuration. The discovery document advertises the authorization, token, userinfo, and JWKS endpoints. The provider does not issue app roles, groups, or permissions. These credentials identify users to your app and do not grant access to Zenith management APIs. The owner has access by default. Additional members must be existing verified Zenith accounts explicitly added by the owner. Users consent before Zenith shares their identity. prompt=none succeeds only with an allowed signed-in account and matching remembered consent. Removing a member revokes their Zenith grants and remembered consent. Adding them again requires fresh consent. Removing a member does not end local app sessions or revoke app passwords and tokens.