Skip to main content
The Generic OAuth connector provides a pure OAuth 2.0 integration for upstream authorization servers. It speaks OAuth only — it does not consume an id_token or call a userinfo endpoint. The OAuth connector provides flexibility to connect services like GitHub, Atlassian, and other platforms that support OAuth but not OpenID Connect..
Console terminology: In the Maverics Console, this section is called Identity Fabric. The YAML configuration uses the connectors key to define identity provider integrations.

Overview

The Generic OAuth connector targets authorization servers that expose OAuth 2.0 endpoints. It supports two configuration styles — discovery via a wellKnownURL, or manually specified authorizeURL and tokenURL endpoints — and a non-standard “no client authentication” mode for federation flows where the upstream authenticates the request via a subject token instead of client credentials. The connector can also obtain or assert its own client identity instead of using a pre-provisioned one, through Dynamic Client Registration or a Client ID Metadata Document. See Client Authentication Modes for how the options compare. The wellKnownURL field accepts either an OAuth Authorization Server Metadata document or an OIDC discovery document (which is a superset of the OAuth metadata format). Either way, the connector reads only the OAuth endpoints from the discovery document — it does not perform OIDC end-user authentication. For interactive end-user login against a full OpenID Connect IdP, use the Generic OIDC connector instead.

Use Cases

  • Token brokering against OAuth-only authorization servers — Exchange Orchestrator-issued tokens for upstream tokens (RFC 8693 token exchange) against services like Databricks account-wide federation or GCP Workload Identity Federation, where the upstream exposes OAuth but no id_token and no userinfo endpoint.
  • Machine-to-machine outbound calls — Authorize outbound calls from the Orchestrator where the upstream authenticates the request via a subject token rather than client credentials.
  • OAuth-only authorization servers — Integrate with services like GitHub or Atlassian that provide OAuth 2.0 authorization but not full OIDC, when you need access tokens for API access rather than user identity.
  • Federation without a pre-provisioned credential — Connect to an authorization server you cannot register a client with ahead of time. The Orchestrator either registers itself on startup (Dynamic Client Registration) or identifies itself by a URL it publishes (Client ID Metadata Document), so no client ID or secret has to be issued and rotated by hand.

Setup

To create a Generic OAuth connector in the Maverics Console:
  1. Navigate to Identity Fabric in the Console sidebar.
  2. Click Create and select Generic OAuth.
  3. Enter a Name for the connector — this is the friendly name that identifies your OAuth integration.
  4. Provide endpoints either by:
    • Entering the Well Known URL — either an OAuth Authorization Server Metadata URL (RFC 8414) or an OIDC discovery URL; or
    • Entering the Authorization URL and Token URL manually.
    These two approaches are mutually exclusive — provide one or the other, not both.
  5. Enter the Client ID issued by the upstream authorization server. Leave this empty if you plan to use CIMD or DCR in step 9.
  6. Enter the Client Secret associated with the client ID. Use the show/hide toggle to verify the value. Leave this empty if you plan to use CIMD or DCR in step 9.
  7. Add one or more Redirect URLs — the URL(s) where the Orchestrator’s OAuth handler is served. At least one entry is required.
  8. Optionally enable Disable Client Authentication if the upstream authorization server authenticates the request via the subject token alone (for example, Databricks account-wide federation). See Disable Client Authentication below.
  9. Optionally configure a credential-less mode in the CIMD / DCR section at the bottom of the drawer. Leave Client ID and Client Secret empty to use either one:
    • For Client ID Metadata Document mode, enter the Client ID Metadata Document (CIMD) Metadata URL. This is the HTTPS URL the Orchestrator serves the document at, and the value it presents as its client ID.
    • For Dynamic Client Registration, fill in the Dynamic Client Registration (DCR) sub-section: Client Name is the display name the authorization server records, and Token Endpoint Authentication Method is the authentication method to request.
    CIMD and DCR are mutually exclusive — configure one or the other, not both.
  10. Click Save.
If your upstream is a full OpenID Connect provider and you need identity claims and end-user session handling out of the box (i.e., id_token and userinfo), use the Generic OIDC connector instead.

Client Authentication Modes

The connector authenticates to the upstream authorization server in one of four ways. Choose one — they are mutually exclusive.
Configuring dcr or cimd alongside clientID, clientSecret, disableClientAuthentication, or each other is rejected when the configuration loads. Both modes install their own client ID, so a connector configured for two of them would have one silently overwrite the other.
Dynamic Client Registration and Client ID Metadata Document mode require Orchestrator v2026.08.2 or later. Earlier versions ignore the dcr and cimd keys.

Dynamic Client Registration

Dynamic Client Registration (RFC 7591) lets the Orchestrator create its own OAuth client at the upstream authorization server instead of using credentials you provision by hand. Add a dcr block and omit clientID and clientSecret.
maverics.yaml

How registration works

DCR requires wellKnownURL. The Orchestrator reads the registration_endpoint from the discovery document, so it cannot be used with manually specified authorizeURL and tokenURL endpoints. Registration runs once when the connector starts, as part of discovery. The Orchestrator sends a POST to the registration endpoint containing:
  • client_name — from dcr.clientName.
  • token_endpoint_auth_method — from dcr.tokenEndpointAuthMethod, when set.
  • grant_typesauthorization_code.
  • response_typescode.
  • redirect_uris — the connector’s loginRedirect.urls.
The Orchestrator accepts an HTTP 200 or 201 response and reads client_id, client_secret, and token_endpoint_auth_method from it. A client_id is required — registration fails without one. If the response sets token_endpoint_auth_method to none or omits client_secret, the connector operates as a public client and sends no client credential on subsequent requests.
Registered credentials are held in memory only. They are not persisted, so the connector registers a new client every time the Orchestrator restarts. On an authorization server that retains registrations, this accumulates clients over time. Confirm your server’s registration limits and cleanup policy before enabling DCR in production.
When dcr is configured, a failure to load the discovery document is fatal — the connector does not start. Without dcr, the same failure is logged and startup continues.

Client ID Metadata Document

Client ID Metadata Documents are an experimental feature — see Experimental Features for important caveats.
Client ID Metadata Document (CIMD) mode, defined in draft-ietf-oauth-client-id-metadata-document, lets the connector identify itself by an HTTPS URL rather than a registered client ID. The Orchestrator serves a JSON metadata document at that URL and presents the same URL as its client ID in every authorization and token request. Nothing is registered with the authorization server in advance. A CIMD connector is a public client: PKCE protects the authorization code exchange in place of a client credential.
This section covers the Orchestrator acting as a CIMD client toward an upstream authorization server. For the Orchestrator acting as an authorization server that accepts CIMD clients, see Client ID Metadata Documents.
maverics.yaml

The published document

The Orchestrator builds the metadata document from the connector’s own configuration — there are no separate fields to set. The example above publishes:
The document is served with a Content-Type of application/json and Cache-Control: max-age=3600.
The Generic OAuth connector has no offlineAccess setting. To publish the refresh_token grant, list offline_access in scopes directly, as in the example above.

URL requirements

The Orchestrator registers a route from the host and path of cimd.url, dropping the scheme, port, and any trailing slash. The Orchestrator must be reachable at that host and path from the authorization server, or the server cannot fetch the document. cimd.url is validated when the configuration loads and must:
  • Use the https scheme.
  • Include a host and a path other than /.
  • Omit any query string, fragment, or userinfo component.
  • Omit dot-segments (. and ..).
  • Be entirely lowercase, in both host and path. The route is registered lowercased while the published client ID keeps the casing you configure, so a mixed-case URL would return 404 at the very address the document advertises.

Discovery

If the authorization server’s discovery document omits client_id_metadata_document_supported, the Orchestrator logs a message and proceeds anyway, since some servers accept CIMD clients without advertising support.

Disable Client Authentication

Setting disableClientAuthentication: true is intended for federation flows where the upstream authorization server authenticates the request via the subject token alone — for example, Databricks account-wide federation. When enabled:
  • clientSecret must be empty.
  • clientID becomes optional, though some grants may still require it at runtime.
  • The Orchestrator enforces grant-type-level rules. For instance, the client-credentials and Resource Owner Password Credentials (ROPC) grants are rejected at runtime when client authentication is disabled, because those grants depend on client credentials to authenticate the request.
maverics.yaml

Troubleshooting

  • Verify the authorizeURL and tokenURL are accessible from the Orchestrator host — confirm both endpoints respond correctly.
  • If using wellKnownURL, ensure the discovery document URL is correct and returns valid JSON with authorization_endpoint and token_endpoint fields.
  • Ensure the loginRedirect URLs match exactly what is registered with the upstream authorization server.
  • Check that the client secret reference resolves correctly via your secret provider — unless disableClientAuthentication is true, in which case clientSecret must be empty.
  • If disableClientAuthentication is true, confirm the grant type in use is supported — client-credentials and ROPC grants are rejected when client authentication is disabled.
  • Verify the requested scopes are valid for the authorization server — invalid scopes may cause authorization failures.
  • If registration fails with a missing registration_endpoint, the discovery document does not advertise one. That authorization server does not support Dynamic Client Registration; use static credentials or CIMD instead.
  • If the authorization server rejects a CIMD client as unknown, fetch cimd.url from outside your network and confirm it returns the metadata document rather than a 404. The usual cause is the Orchestrator not being routable at that host and path.
  • If the configuration fails to load with 'url' must be lowercase, lowercase the entire cimd.url, host and path alike.
  • If either credential-less mode is ignored entirely, check the Orchestrator version — dcr and cimd require v2026.08.2 or later.

Identity Fabric

Overview of all identity providers

Token Brokering

RFC 8693 token exchange for downstream APIs

Generic OIDC

Generic OpenID Connect connector

Generic SAML

Generic SAML 2.0 connector

Client ID Metadata Documents

Accept CIMD clients as an OIDC Provider

Experimental Features

Caveats that apply to experimental features