Skip to main content
To learn about Client ID Metadata Document (CIMD) registration, including its benefits, use cases, and how manual and dynamic CIMD work, read CIMD Overview.

Prerequisites

Before registering an application with CIMD, make sure you meet the following requirements:

Tenant and application configuration

Only third-party applications can be registered as CIMD clients:
  • Configure the API access policy: Third-party applications require explicit client grants to access APIs.
  • Promote connections to the domain level: Make connections available on the domain or tenant level to authenticate your users, which is required for third-party applications.
  • Resource Parameter Compatibility Profile (Optional): For MCP clients, we recommend enabling this profile in your tenant settings. This allows the authorization server to handle resource-specific requests (RFC 8707) by checking the resource parameter if the audience is not provided.

Supported client types

You can register the following client types with CIMD in Auth0:

Supported authentication methods

CIMD clients cannot use authentication methods based on shared symmetric secrets, such as client_secret_post, client_secret_basic, or client_secret_jwt. Depending on whether the client is public or confidential, Auth0 supports the following authentication methods for CIMD clients:
  • Public clients:
    • No client authentication required at the token endpoint; set token_endpoint_auth_method to none in client metadata
    • Must use Proof Key for Code Exchange (PKCE) for authorization flows
  • Confidential clients:
    • Only Private Key JWT authentication is supported; set token_endpoint_auth_method to private_key_jwt in client metadata
    • Provide a jwks_uri to host public keys. The jwks_uri must share the exact same origin (scheme, host, and port) as the CIMD URL. To learn more, read CIMD JSON validation rules.
Private Key JWT authentication is available only for Enterprise customers. To learn more about Enterprise plans, review Pricing or contact Auth0 Sales.
Manual CIMD clients that use Private Key JWT authentication must implement key rotation by generating a new key pair with a new, unique kid.

Enable CIMD registration

Enable CIMD registration with the Auth0 Dashboard or Management API.
  • Enable CIMD support: Enable the Client ID Metadata Document Registration toggle in your tenant settings to indicate CIMD support in the Auth0 Authorization Server metadata, allowing clients to automatically discover this capability when connecting.
    • Navigate to Settings > Advanced and scroll down to the Settings section.
    • Toggle on Client ID Metadata Document Registration.
  • Dynamic CIMD Registration support: Enable the Dynamic CIMD Registration toggle underneath Client ID Metadata Document Registration in your tenant settings. When enabled, new clients can register themselves via Dynamic CIMD. When disabled, new clients cannot register themselves via dynamic CIMD, but existing dynamic CIMD clients still work as expected.

Register applications with CIMD

When creating an application in Auth0, register it manually with CIMD using the Auth0 Dashboard or Management API. When dynamic CIMD registration is enabled, applications register themselves at runtime via their CIMD URL with Auth0. To enable Dynamic CIMD registration, read Enable CIMD registration.
To register an application with manual CIMD using the Auth0 Dashboard:
  1. Navigate to Applications > Applications.
  2. Select Create Application > Import from URL.
  3. Enter the CIMD URL. Then, select Preview. Auth0 validates the CIMD URL against the CIMD URL validation rules.
  4. If your CIMD URL is valid, Auth0 loads the CIMD and validates it against the CIMD JSON validation rules. Preview your client metadata and troubleshoot it for any validation errors.
  5. Select Create.

Refresh client metadata

Manual CIMD clients and dynamic CIMD clients refresh client metadata in different ways.
For manual CIMD clients, you can manually refresh client metadata. Auth0 fetches fresh client metadata from the CIMD, which you can preview and save.When you refresh client metadata, Auth0 updates the app_type and grant_types to match the values in the hosted CIMD. To learn more about CIMD fields, read CIMD JSON validation rules.In the Auth0 Dashboard:
  1. Navigate to Applications > Applications and select your CIMD client.
  2. At the top-right corner, select Refresh Client Metadata.
  3. Select Refresh Preview to preview the latest client metadata in the CIMD. Review any validation warnings or errors.
  4. Select Save.

Get CIMD client

To get a CIMD client, make a GET request to the /v2/clients/{clientId} endpoint, where {clientID} is the Auth0-generated client ID assigned to the CIMD client:
Alternatively, pass the external_client_id, or the CIMD URL, as the query parameter to the /v2/clients endpoint:
If successful, Auth0 returns a response that includes the CIMD client configuration with fields like external_client_id, name, callbacks, token_endpoint_auth_method, external_metadata_created_by, external_metadata_status, and more.

CIMD metadata status

Every CIMD client includes an external_metadata_status field that indicates whether Auth0 could resolve the client’s hosted metadata document:
A dynamic CIMD client with external_metadata_status: "unavailable" can recover on its own once its metadata URL becomes reachable again. Auth0 re-resolves the metadata automatically on a subsequent authentication request, with no manual action required. If the status remains unavailable for an extended period, consider deleting the client rather than waiting indefinitely.
To troubleshoot the CIMD metadata status, you can make a POST request to the /api/v2/clients/cimd/preview endpoint. If the URL is reachable but the CIMD metadata document is invalid, Auth0 will return validation errors.

Update CIMD client

You can update the fields in the Auth0 database for a registered CIMD client. Updating the CIMD client in Auth0 does not automatically update the CIMD hosted on the application’s domain. You can only update the following fields for CIMD clients. Dynamic CIMD clients have further restrictions: you cannot update app_type, description, grant_types, and name. To update a CIMD client, make a PATCH request to the /v2/clients/{clientId} endpoint, where {clientID} is the Auth0-generated client ID assigned to the CIMD client:

Security considerations

CIMD client key rotation for private_key_jwt authentication

To successfully rotate keys for CIMD clients using Private Key JWT authentication, generate a new key pair with a new, unique kid. If you rotate your private key and update your JWKS with new key material under the same kid, Auth0’s CIMD registration rejects the new key and preserves the old one. This ensures that key rotation requires explicit addition of new keys rather than silent replacement. For manual CIMD clients, refresh your key registration in Auth0 after rotating your keys. To learn more, read Rotate signing keys. For dynamic CIMD clients, no manual refresh is required: if Auth0 cannot find a signing key (kid) during token validation, it automatically fetches the latest keys from the client’s jwks_uri.

Credentials are not supported for dynamic CIMD clients

A dynamic CIMD client authenticates with keys resolved from its jwks_uri, so it has no stored credential records. Making a POST request to the /v2/clients/{id}/credentials endpoint for a dynamic CIMD client fails with the following error:
To rotate the keys of a dynamic CIMD client, update the jwks_uri document hosted on its domain; Auth0 fetches the new keys automatically when needed. Reading, updating, or deleting credentials for a dynamic CIMD client is not blocked; since no credential record exists, these requests behave the same as they would for any client with no credentials (an empty list, a 404 Not Found for a specific credential ID, or an idempotent 204 No Content on delete). Manual CIMD clients and other application types are not affected by this restriction.