MCP OAuth Token Audiences: Why Passthrough Reaches a Different API
The token from an MCP client and the token for an upstream API belong to separate authorization relationships. Resource, audience, issuer, and validation boundaries show when passthrough can expose another backend's permissions.
Read in JapaneseThe access token an MCP client presents to an MCP server and the token that server presents to an upstream API belong to separate authorization relationships. The stable MCP 2026-07-28 specification requires clients to identify the MCP server with resource in both authorization and token requests. It also requires the server to accept only tokens issued for its own resource and forbids forwarding the client's token to an upstream API. Reusing one bearer token across both hops is therefore not neutral plumbing. It removes the boundary that keeps permission for one resource from being exercised through another.
Two authorization relationships
| Network hop | Intended credential | Required boundary | Meaning of a missing boundary |
|---|---|---|---|
| Authorization server → MCP client | Token intended for the MCP server | Request names the MCP resource; issuance is resource-bound | Tokens for different resources become difficult to distinguish |
| MCP client → MCP server | MCP-audience token | Server validates issuer, expiry, scope, and intended audience | A token for another service enters the MCP request path |
| MCP server → upstream API | Separate token issued by the upstream authorization server | MCP server acts as an OAuth client with limited upstream scope | The client's credential reaches another backend |
The dangerous path is straightforward. A client presents an upstream API token to the MCP server. The server fails to reject the audience mismatch and copies that bearer token into its upstream request. The token is legitimate at the upstream API, so the request may succeed with its existing permissions. Rate limits, request checks, client attribution, or audit controls expected at the MCP boundary may be bypassed. The same problem appears when a token obtained from one compromised service is accepted across several resources.
This does not mean token passthrough creates permissions absent from the token. It means the MCP server can become a path to permissions granted for a different resource, while the parties on each side may make incompatible assumptions about who validated the credential and which controls were applied.
Requirements in the current specification
An MCP client must place the MCP server's canonical URI in the resource parameter in both the authorization request and token request. The MCP server, acting as a resource server, must validate the inbound token and reject one that was not issued specifically for its resources. It must neither accept nor transit other tokens.
When the MCP server calls an upstream API, it becomes an OAuth client of that API. The upstream access token must be a separate token issued by the upstream authorization server. Sending resource is one half of this control; it does not replace validation by the recipient. A narrow scope also does not make a wrong audience acceptable.
Access-boundary evidence for adoption
An adoption record should make the two credential lifecycles visible. The following fields are an MCP Guard operational recommendation, not a protocol-mandated record format:
- the MCP endpoint's canonical URI and the
resourcevalue sent in both requests; - allowed issuer, audience, and scopes at the MCP server, plus rejection evidence for mismatches;
- upstream issuer, account, scopes, storage location, and revocation method for each API;
- confirmation that the inbound Authorization header is never copied into an upstream request; and
- negative tests using a correct MCP token, a token for another resource, and an expired token.
Adoption is supportable when the inbound and upstream issuers, tokens, and minimum scopes are separate and each hop enforces its own audience. Require remediation before connection if the server accepts arbitrary bearer tokens, omits audience validation, or forwards the same token to another backend.
Scope and sources
This analysis reflects the stable MCP 2026-07-28 Authorization specification, its normative Security Considerations, and official Security Best Practices reviewed on September 22, 2026. It is not a fresh inspection of an individual MCP server, evidence of a token leak, or a claim about a product CVE. The table and adoption record are MCP Guard recommendations derived from the public requirements.
