Mode Overview
Mode Comparison
| Feature | Public | Transparent | Orchestrated |
|---|---|---|---|
| Token Required | No | Yes (external) | Yes (FrontMCP-issued) |
| User Identity | Anonymous | From upstream IdP | From login or upstream |
| JWKS Source | Self-generated | Upstream IdP | Self-generated |
| Session Management | Minimal | Pass-through | Full control |
| Multi-provider | No | Single provider | Multiple providers |
| Progressive Auth | No | No | Yes |
| Consent UI | No | No | Optional |
Public Mode
No authentication required. All requests receive an anonymous session.How It Works
Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
sessionTtl | number | 3600 | Session lifetime in seconds |
anonymousScopes | string[] | ['anonymous'] | Scopes assigned to anonymous sessions |
publicAccess.tools | string[] | 'all' | 'all' | Tools accessible without auth |
publicAccess.prompts | string[] | 'all' | 'all' | Prompts accessible without auth |
publicAccess.rateLimit | number | 60 | Rate limit per IP per minute |
Use Cases
Development
Rapid prototyping without auth setup overhead
Public APIs
Endpoints that don’t require user identity
Transparent Mode
Pass-through tokens from an external identity provider. FrontMCP validates tokens but doesn’t issue them.How It Works
Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
remote.provider | string | Required | Base URL of the IdP |
remote.jwksUri | string | Auto-discovered | Custom JWKS endpoint |
remote.jwks | JSONWebKeySet | - | Inline JWKS for offline verification |
expectedAudience | string | string[] | Issuer URL | Required audience claim value(s) |
requiredScopes | string[] | [] | Scopes that must be present |
allowAnonymous | boolean | false | Allow requests without tokens |
Provider Examples
- Auth0
- Okta
- Azure AD
Use Cases
Existing IdP Integration
Your organization already uses Auth0, Okta, or similar
Single Provider
All users authenticate through one identity provider
Orchestrated Mode
FrontMCP acts as a full OAuth 2.1 authorization server. This mode has two types: local and remote.Local Type
Self-contained auth server with built-in user management.Remote Type
Local auth server that proxies user authentication to an upstream IdP.How It Works
Configuration Options
| Option | Type | Default | Description |
|---|---|---|---|
type | 'local' | 'remote' | Required | Self-contained or upstream proxy |
consent | ConsentConfig | { enabled: false } | Consent UI configuration |
sessionMode | 'stateful' | 'stateless' | 'stateful' | Token storage strategy |
tokenStorage.type | 'memory' | 'redis' | 'memory' | Storage backend |
allowDefaultPublic | boolean | false | Allow unauthenticated requests |
incrementalAuth | IncrementalAuthConfig | { enabled: true } | Progressive authorization |
Consent Configuration
Incremental Authorization
OAuth Endpoints
Orchestrated mode exposes standard OAuth endpoints:| Endpoint | Method | Description |
|---|---|---|
/oauth/authorize | GET | Start authorization flow |
/oauth/token | POST | Exchange code for tokens |
/oauth/register | POST | Dynamic Client Registration |
/oauth/userinfo | GET | User profile information |
/.well-known/oauth-authorization-server | GET | Server metadata |
/.well-known/jwks.json | GET | Public signing keys |
Use Cases
Multi-Provider Federation
Combine multiple IdPs under one session (Slack + GitHub + custom)
Progressive Authorization
Users authorize apps incrementally as needed
Full Token Control
Custom token lifetimes, scopes, and refresh behavior
Built-in Consent UI
Let users choose which tools/resources to grant
Mode Selection Flowchart
Security Comparison
| Security Aspect | Public | Transparent | Orchestrated |
|---|---|---|---|
| Token Verification | None | Against upstream JWKS | Against local JWKS |
| PKCE Support | N/A | Depends on IdP | Always S256 |
| Refresh Token Rotation | N/A | Depends on IdP | Always rotated |
| Key Management | Auto-generated | Upstream-managed | Self-managed |
| Consent UI | No | No | Optional |
| Session Revocation | N/A | N/A | Supported |

