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
resourceparameter if theaudienceis not provided.
Supported client types
You can register the following client types with CIMD in Auth0:- Application type: Must be a native or regular web application.
- Third-party application: Must be a third-party application (
is_first_party: false), which is subject to enhanced security controls.
Supported authentication methods
CIMD clients cannot use authentication methods based on shared symmetric secrets, such asclient_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_methodtononein client metadata - Must use Proof Key for Code Exchange (PKCE) for authorization flows
- No client authentication required at the token endpoint; set
- Confidential clients:
- Only Private Key JWT authentication is supported; set
token_endpoint_auth_methodtoprivate_key_jwtin client metadata - Provide a
jwks_urito host public keys. Thejwks_urimust share the exact same origin (scheme, host, and port) as the CIMD URL. To learn more, read CIMD JSON validation rules.
- Only Private Key JWT authentication is supported; set
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.- Auth0 Dashboard
- 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.- Auth0 Dashboard
- Management API
To register an application with manual CIMD using the Auth0 Dashboard:
- Navigate to Applications > Applications.
- Select Create Application > Import from URL.
- Enter the CIMD URL. Then, select Preview. Auth0 validates the CIMD URL against the CIMD URL validation rules.
- 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.
- Select Create.
Refresh client metadata
Manual CIMD clients and dynamic CIMD clients refresh client metadata in different ways.- Manual CIMD clients
- Dynamic CIMD clients
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:- Navigate to Applications > Applications and select your CIMD client.
- At the top-right corner, select Refresh Client Metadata.
- Select Refresh Preview to preview the latest client metadata in the CIMD. Review any validation warnings or errors.
- Select Save.
Get CIMD client
To get a CIMD client, make aGET request to the /v2/clients/{clientId} endpoint, where {clientID} is the Auth0-generated client ID assigned to the CIMD client:
- Auth0 CLI
- cURL
external_client_id, or the CIMD URL, as the query parameter to the /v2/clients endpoint:
- Auth0 CLI
- cURL
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 anexternal_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.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 updateapp_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:
- Auth0 CLI
- cURL
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, uniquekid. 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 itsjwks_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:
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.