Skip to main content

Configure connector authentication

Connector authentication sets the credential the Connector Gateway sends to a connector's backend MCP server. Callers authenticate to the gateway with their own identity, and the gateway attaches the outbound credential that the connector's authentication type defines.

Choose an authentication type​

Every connector has exactly one authentication type.

Console labelAPI typeWhat the gateway sendsNeeds
NonenoneNo credentialNothing
Bearer tokenbearerTokenA static token in the Authorization headerA secret
Header injectionheaderInjectionA static value in a header you nameA secret
Upstream identity providerupstreamInjectThe calling user's own OAuth token, collected through a per-user consent flowA connector identity provider
Token exchange (RFC 8693)tokenExchangeA token obtained by exchanging the caller's token at call timeA token endpoint; a secret is optional
API onlyawsStsAWS SigV4-signed requests using temporary credentials from AWS STS web-identity federationAn identity provider; no secret
API onlyoboA Microsoft Entra ID token from the On-Behalf-Of (OBO) flowAn identity provider and a secret
API onlyxaaA token from the cross-app access (ID-JAG) flowAn identity provider; secrets are optional

Use these guidelines to pick a type:

  • Use None for a backend that needs no credential, such as an internal MCP server that's reachable only inside your cluster.
  • Use Bearer token or Header injection when the backend accepts one shared API key for every caller. Every user reaches the backend with the same identity.
  • Use Upstream identity provider when the backend should act as each user, for example a SaaS MCP server that requires the user's own OAuth grant.
  • Use Token exchange (RFC 8693), obo, xaa, or awsSts when the backend trusts your identity provider and accepts a token derived from the caller's identity.

Set up the prerequisites in order​

Each authentication type references objects that must exist before you save the connector. Create them in this order:

  1. Secrets. Create a managed secret for each static credential or client secret the type needs.
  2. Identity provider. Register a connector identity provider for types that need one. The provider's client secret is itself a managed secret, which is why secrets come first.
  3. Connector authentication. Configure the connector's authentication type, referencing the secrets and provider.
  4. Access. Grant access to the connector through its connector policy.

Configure authentication in the console​

  1. In the console, open the connector and select the Configuration tab.
  2. Under Authentication, choose a Backend auth type and fill in its fields:
    • Bearer token: under Secret reference, choose the managed secret that holds the token.
    • Header injection: enter the Header name, for example X-API-Key, and choose the managed secret that holds its value.
    • Upstream identity provider: choose the connector identity provider that users authorize against.
    • Token exchange (RFC 8693): enter the Token URL and Client ID, and optionally an audience, scopes, and a Client secret reference.
  3. Select Save. For a draft connector, select Save and verify, which checks the endpoint and authentication before publishing it.

When a connector uses awsSts, obo, or xaa, the console shows a warning and locks the connector's configuration form so that a save can't remove the authentication. Change these connectors through the API.

Configure authentication through the API​

Set authentication in the auth object of a connector create or update request: POST /v1/gateways/{gateway_id}/connectors or PUT /v1/gateways/{gateway_id}/connectors/{id}. The update route replaces the whole connector, so send every field you want to keep. The type field selects the authentication type, and a sibling object with the snake_case form of the type carries its fields.

This example signs requests to an AWS backend with credentials from AWS STS:

Connector auth object
{
"auth": {
"type": "awsSts",
"aws_sts": {
"provider_id": "<IDENTITY_PROVIDER_ID>",
"region": "us-east-1",
"service": "aws-mcp",
"role_mappings": [
{
"claim": "s3-readers",
"role_arn": "arn:aws:iam::<ACCOUNT_ID>:role/s3-read-only",
"priority": 1
}
],
"fallback_role_arn": "arn:aws:iam::<ACCOUNT_ID>:role/default-mcp"
}
}
}

A secret reference is an object with either a managed_secret_id or a kubernetes_secret with name, namespace, and key. A provider_id is the ID of an identity provider from GET /v1/connector-identity-providers.

Authentication type fields​

The tables below list each type's fields. The full schema is ConnectorAuthRequest in the Enterprise Manager API reference.

bearer_token

FieldRequiredDescription
tokenYesSecret reference that holds the token.

header_injection

FieldRequiredDescription
header_nameYesHeader to set on each request to the backend.
valueYesSecret reference that holds the header value.

upstream_inject

FieldRequiredDescription
provider_idYesIdentity provider whose user token the gateway sends along.

token_exchange

FieldRequiredDescription
token_urlNoToken endpoint that performs the exchange.
client_idNoClient ID for the token endpoint.
client_secretNoSecret reference for the client secret.
audienceNoAudience to request for the exchanged token.
scopesNoScopes to request for the exchanged token.
subject_token_typeNoToken type of the caller's token sent for exchange.
provider_idNoIdentity provider whose collected user token is exchanged.
external_token_header_nameNoCustom header for the exchanged token. When unset, the token replaces the Authorization header.

aws_sts

FieldRequiredDescription
provider_idYesIdentity provider whose user token the gateway presents to AWS STS.
regionYesAWS region for STS and request signing.
role_mappingsSee noteRules that map a claim value (claim) or a CEL expression (matcher) to a role_arn. Lower priority values are evaluated first.
fallback_role_arnSee noteRole to assume when no mapping matches.
role_claimNoToken claim that role_mappings entries match against.
serviceNoSigV4 service name.
session_durationNoSession length in seconds, from 900 to 43200.
session_name_claimNoToken claim used as the STS session name.

Set at least one of role_mappings or fallback_role_arn. The fields mirror ToolHive's AWS STS configuration; see AWS STS authentication for setting up the IAM side.

obo

FieldRequiredDescription
provider_idYesIdentity provider whose user token the gateway exchanges.
tenant_idYesEntra ID tenant.
client_idYesClient ID of the app registration that performs the exchange.
client_secretYesSecret reference for that app registration's client secret.
audienceSee noteAudience of the downstream token.
scopesSee noteScopes of the downstream token.
authorityNoHTTPS authority URL that overrides the default.
cache_skewNoDuration, such as 5m, to refresh cached tokens early.

Set at least one of audience or scopes.

xaa

FieldRequiredDescription
provider_idYesIdentity provider whose user ID token starts the exchange.
idp_token_urlYesIdentity provider token endpoint that issues the identity assertion (ID-JAG).
target_token_urlYesBackend authorization server token endpoint that accepts the assertion.
target_audienceYesAudience of the identity assertion.
idp_client_idNoClient ID at the identity provider.
idp_client_secretNoSecret reference for the identity provider client secret.
target_client_idNoClient ID at the backend authorization server.
target_client_secretNoSecret reference for the backend client secret.
target_resourceNoResource indicator for the backend token.
scopesNoScopes to request for the backend token.
subject_token_typeNoMust be the ID token type when set.
insecure_target_token_urlNoAllows plain http:// token URLs. Credentials then travel in cleartext.

For background on these federation flows, see Backend authentication in the vMCP documentation, which uses the same strategies.

How users authorize connectors​

For an Upstream identity provider connector, each user completes consent in Your workspace or during client connection. The Connector Gateway stores the authorization and prompts the user to Re-authenticate after it expires.

Each stored authorization is bound to the identity provider configuration that issued it. Changing any of these settings makes every user of that provider authorize again on their next connection:

  • The provider's issuer, OAuth endpoints, or client ID
  • The requested scopes or additional authorization parameters
  • The redirect URI, which derives from the Connector Gateway issuer

The gateway keeps the stored authorizations. If you revert the change, users' existing authorizations work again without another consent step.

Next steps​