Production Checklist
Security
- TLS everywhere — Autentico is behind a reverse proxy with a valid TLS certificate.
AUTENTICO_APP_URLstarts withhttps://. - Strong secrets —
AUTENTICO_CSRF_SECRET_KEY,AUTENTICO_ACCESS_TOKEN_SECRET, andAUTENTICO_REFRESH_TOKEN_SECRETare all strong, unique hex strings (generated byautentico init). - Persistent RSA key —
AUTENTICO_PRIVATE_KEYis set to a stable base64-encoded PEM value (generated byautentico init). If it's not set, an ephemeral key is used and all tokens are invalidated on restart. - Private key backup — The value of
AUTENTICO_PRIVATE_KEYis backed up securely (e.g., in a secrets manager). Losing it invalidates all issued tokens. - Secrets in secrets manager —
AUTENTICO_PRIVATE_KEY,AUTENTICO_ACCESS_TOKEN_SECRET,AUTENTICO_REFRESH_TOKEN_SECRET, andAUTENTICO_CSRF_SECRET_KEYare not committed to source control or exposed in logs. - Database backup — The SQLite database is backed up regularly. Consider a cron job using
sqlite3 /data/autentico.db ".backup /backups/autentico-$(date +%Y%m%d).db".
Configuration
-
AUTENTICO_APP_URLis correct — This value appears in the OIDC discovery document, tokenissclaim, and redirect validation. It must exactly match the URL clients use. - MFA enabled (recommended) —
require_mfa = truein settings, withmfa_method = totporemail. TOTP is preferred. - Account lockout configured —
account_lockout_max_attemptsandaccount_lockout_durationare set to reasonable values. - Session lifetimes reviewed —
sso_session_idle_timeoutandsso_session_max_agematch your security policy. - Token lifetimes reviewed —
access_token_expirationis short (15m default).refresh_token_expirationreflects your session policy. - Self-signup decision made —
allow_self_signupisfalseunless you intend to allow open registration. - SMTP configured (if using email OTP or email-verified registration) — SMTP settings tested via a login attempt.
Operations
- Cleanup job running — Background cleanup is active (it starts automatically). Check logs to confirm
[cleanup]entries appear. - Log aggregation — Autentico logs to stdout. Forward logs to your SIEM or log management system.
- Alerting — Alert on repeated failed login attempts, admin API errors, and server startup failures.
- Health check — Monitor
GET /healthz— the dedicated lightweight health check endpoint.GET /.well-known/openid-configurationalso returns 200 when the server is healthy, but/healthzis faster and purpose-built for monitoring. - Upgrade tested — You have tested the upgrade path (pull new image, restart) in a non-production environment.
Clients
- Only necessary grant types enabled — Each registered client has only the grant types it actually uses.
- Redirect URIs are exact — No wildcards. Each redirect URI is the precise URL the client will use.
- Confidential clients have secrets — Server-side apps are registered as
confidentialwithclient_secret_basicorclient_secret_post. - Public clients use PKCE — Browser and mobile apps are registered as
publicwithnoneauth method and must use PKCE.
tip
After launch, revisit the Admin UI Sessions page periodically to look for anomalous session patterns (many sessions from unexpected IPs, unusual user agents, etc.).