Skip to main content
Before deploying FrontMCP authentication to production, review this comprehensive checklist covering security, configuration, and operational requirements.

Pre-Deployment Checklist

1

Configure Persistent Token Storage

Replace in-memory storage with a persistent store. Use Redis for multi-instance deployments, or SQLite for a single-instance/single-node deployment that needs tokens to survive a restart.
SQLite persists tokens on the local disk of one node — it is not a shared store. For more than one instance behind a load balancer, use Redis so every instance reads the same authorization/refresh/session state.
2

Provide Persistent Signing Keys

Auto-generated keys are lost on restart. Provide stable keys.
3

Enable Refresh Token Flow

For local and remote modes, opt into automatic token refresh.
In remote mode, token TTLs are controlled by the upstream identity provider — FrontMCP does not mint its own access/refresh tokens. In local mode, FrontMCP acts as the authorization server and mints its own tokens (signed with local.signKey).
4

Enable HTTPS

All production traffic must use TLS. Configure your reverse proxy or load balancer.
5

Set Expected Audience

Validate the audience (aud) claim. expectedAudience is supported in transparent, local, and remote modes (it lives on the shared/orchestrated auth options), so set it wherever FrontMCP verifies bearer tokens.

Security Requirements

Required

HTTPS only - Never expose auth endpoints over HTTP in production
Persistent token storage - Redis with TLS for multi-instance deployments
Stable signing keys - Provide keys via environment or secrets manager
PKCE enforcement - OAuth 2.1 requires PKCE (S256 only)
Refresh token rotation - Always rotate refresh tokens on use
Audience validation - Validate the aud claim via expectedAudience (supported in transparent, local, and remote modes)
Pinned public URL - Set FRONTMCP_PUBLIC_URL to a fixed origin. The issuer / resource / OAuth-discovery URLs — and the transparent-mode expected audience — are otherwise derived from request headers. X-Forwarded-Host/X-Forwarded-Proto are ignored by default; only enable them with FRONTMCP_TRUST_PROXY=1 behind a proxy that strips client-supplied forwarded headers.
Machine ID - Set MACHINE_ID env var for multi-instance session portability
Require registered clients - Set auth.requireRegisteredClients: true (local/remote) so every OAuth client must be registered (DCR / pre-registered) or use a CIMD client-id URL. This enforces exact redirect_uri matching and prevents auth-code interception via an unregistered client’s attacker-chosen redirect_uri.
Confidential clients - Clients registered with client_secret_basic/client_secret_post are authenticated with a constant-time secret check on both the code-exchange and refresh grants.
Rate limiting - Protect token endpoints from brute force
Monitoring - Alert on auth failures, unusual patterns
Key rotation - Rotate signing keys periodically (30-90 days)
Scope minimization - Request only necessary scopes
Consent UI - Let users see what they’re authorizing

Configuration Reference

Minimum Production Configuration

Environment Variables


Token Lifetime Guidelines

Shorter access tokens improve security but increase refresh frequency. Monitor your refresh token endpoint load.

Key Management

Generating Production Keys

Key Rotation Strategy

Configuration for Key Rotation

The local block accepts a single signKey (and optional jwks containing previous keys for validation during rollover). Rotation is performed by deploying a new server build with an updated signKey while keeping the old key in jwks until in-flight tokens expire.

Redis Configuration

Secure Redis Connection

Redis Data Stored


Monitoring & Alerting

Key Metrics to Monitor

Logging Configuration


Common Production Issues

Cause: Auto-generated keys changed after restart.Solution: Provide persistent signing keys via environment variable:
Cause: Using in-memory storage with multiple instances.Solution: Configure shared Redis storage:
Cause: Network issues or IdP rate limiting.Solution:
  • Increase JWKS cache TTL
  • Consider inline JWKS for critical IdPs
  • Add retry logic with exponential backoff
Cause: Redis connection issues or key generation overhead.Solution:
  • Use Redis connection pooling
  • Pre-generate signing keys (don’t generate on-demand)
  • Monitor Redis latency

Security Hardening

Disable Insecure Options

For remote mode, DCR is configured under providerConfig:

HTTP Security Headers

Configure your reverse proxy to add security headers:

Rate Limiting

FrontMCP includes a built-in session rate limiter with a sliding window algorithm: The rate limiter tracks requests per key (typically client IP) and provides:
  • wouldAllow(key) — pre-check without consuming quota
  • getStats() — monitoring statistics
For external rate limiting on the token endpoint:

Deployment Patterns

In-memory storage loses all sessions on restart. Users must re-authenticate.

Quick Reference

OAuth 2.1 Compliance Checklist

PKCE required for all clients (S256 only)
Refresh token rotation enabled
No implicit grant flow
Authorization codes single-use
Redirect URI exact match
State parameter required

Pre-Production Verification


Next Steps

Authorization Modes

Choose the right mode for your deployment

Tokens & Sessions

Configure token lifetimes and storage

Local OAuth

Built-in OAuth server setup

Remote OAuth

External IdP integration