Authentication
Remote Legate is an OAuth resource server. Your org IdP (or Stratum as token broker) issues short-lived JWTs; Legate verifies them.
This page describes the interface only — not IdP broker internals or policy source.
Model
| Actor | Role at the interface |
|---|---|
| MCP client | Presents Authorization: Bearer on remote tool calls |
| IdP / Stratum BFF | Issues audience-bound tokens after login / consent |
| Legate | Verifies JWT (JWKS), enforces audience/resource, maps scopes to packs |
Bearer JWT
POST /mcp
Authorization: Bearer <token>
Requirements callers must satisfy:
- Token
aud(andresourcewhen present) matches the Legate resource URI issued for your deployment - Tokens minted for other APIs are rejected (no passthrough)
- Do not log raw Bearer tokens
Discovery
Unauthenticated remote calls receive 401 with a WWW-Authenticate challenge that includes a resource_metadata URL (RFC 9728 protected-resource metadata).
Clients can also fetch:
GET /.well-known/oauth-protected-resource
Use the metadata to learn the resource identifier and authorization server hints for your deployment.
Scopes and packs
OAuth scopes map to published capability packs. Examples partners may see:
| Pack | Typical use |
|---|---|
legate.read | Observe / query channel-scoped state |
legate.write | simulate / prepare / submit_signed sequence |
Tokens with no scope or pack claims receive empty packs (deny by default) on remote HTTP. Exact scope string names for your tenant are shown when the token is minted.
Write consent
Tools that prepare or submit writes additionally require an explicit write consent claim on the JWT (minted only after operator / user consent in Stratum). A read-scoped token cannot escalate to writes by calling a write tool name.
Stdio note
Local stdio on a trusted operator machine may use a different local identity path. It is not a substitute for remote JWT auth in multi-user environments.