Skip to content

Authentication endpoints

MethodPathDescription
GET/loginLogin form
POST/loginSubmit email + password
GET/login/otpOTP entry form
POST/login/otpSubmit OTP code
GET/login/totpTOTP challenge form
POST/login/totpSubmit TOTP code
GET/login/totp/recoveryRecovery code entry form
POST/login/totp/recoverySubmit recovery code
GET/login/passkeyPasskey login page
POST/login/passkey/beginBegin WebAuthn assertion
POST/login/passkey/finishFinish WebAuthn assertion
POST/logoutDestroy session
GET/forgot-passwordForgot password form
POST/forgot-passwordRequest reset email
GET/reset-passwordReset password form (requires ?token=)
POST/reset-passwordSubmit new password

Profile endpoints (require session)

MethodPathDescription
GET/profile/passwordChange password form
POST/profile/passwordSubmit password change
GET/profile/totp/enrollTOTP enrollment page
POST/profile/totp/enrollConfirm TOTP enrollment
GET/profile/totp/recovery-codesRecovery codes display
GET/profile/totp/disableTOTP disable form
POST/profile/totp/disableConfirm TOTP disable
GET/register/passkeyPasskey registration page
POST/register/passkey/beginBegin WebAuthn registration
POST/register/passkey/finishFinish WebAuthn registration

Reverse proxy integration

MethodPathDescription
GET/auth/verifyForward auth verification endpoint. Returns 200 with identity headers on success, or 401 when the session is missing or invalid. Append ?policy=<name> to enforce an access policy (returns 403 on denial).

Response headers on 200:

HeaderValue
X-Auth-UserThe authenticated user's internal UUID
X-Auth-EmailThe authenticated user's email address
X-Auth-GroupsComma-separated group names (omitted when the user has no groups)

OIDC provider

MethodPathDescription
GET/.well-known/openid-configurationOIDC discovery document
GET/oauth/jwksJSON Web Key Set for token verification
GET/oauth/authorizeAuthorization endpoint
POST/oauth/tokenToken endpoint
GET/POST/oauth/userinfoUserInfo endpoint

Admin endpoints (require admin session)

These are served on the admin port (ADMIN_PORT, default 8283) at the root - not on the public port. The paths below are relative to the admin domain. If you set ADMIN_BASE_PATH, prefix them with that value.

MethodPathDescription
GET/loginAdmin login form
POST/loginSubmit admin credentials
POST/logoutDestroy admin session
GET/usersUser list
POST/usersCreate user
GET/users/:idUser detail
POST/users/:id/passwordSet user password
POST/users/:id/reset-emailSend reset email
POST/users/:id/disableDisable account
POST/users/:id/enableEnable account
POST/users/:id/deleteDelete account
POST/users/:id/revoke-sessionsRevoke all sessions
POST/users/:id/revoke-totpRevoke TOTP enrollment
POST/users/:id/passwordlessToggle passwordless mode
GET/clientsOIDC client list
POST/clientsCreate OIDC client
POST/clients/:id/deleteDelete OIDC client
GET/auditAudit log
GET/settingsSettings page

Static assets

PathDescription
/static/css/main.cssMain stylesheet
/static/js/passkey.jsWebAuthn JavaScript