https://example-client.com/mcp-metadata.json). La URL del CIMD es el ID de cliente de la aplicación y demuestra la propiedad del dominio, lo que garantiza que solo los administradores de inquilinos de confianza puedan registrar aplicaciones.
Cuando importa una aplicación desde su URL de CIMD, Auth0 recupera, valida y almacena los metadatos para registrar la aplicación como cliente CIMD. Aunque Auth0 mantiene un registro de esta configuración, el CIMD alojado sigue siendo la fuente de referencia; las actualizaciones de metadatos se sincronizan mediante actualizaciones manuales. Este proceso de registro de aplicaciones se denomina registro manual de CIMD.
Solo puede registrar aplicaciones de terceros con CIMD manual, que están sujetas a controles de seguridad mejorados. Una vez registrada, configure su cliente CIMD como una aplicación de terceros en Auth0.
Beneficios clave
- Utiliza criptografía asimétrica (claves pública/privada) en lugar de secretos simétricos compartidos que podrían filtrarse.
- Los propietarios de las aplicaciones administran los metadatos del cliente directamente en el CIMD; Auth0 simplemente obtiene y conserva estas actualizaciones.
- El ID de cliente es la URL del CIMD alojada en un dominio HTTPS seguro, que sirve como prueba de propiedad legible por humanos en los registros de auditoría.
Las aplicaciones de terceros, incluidos los clientes CIMD, no son compatibles con Organizaciones. La compatibilidad de Organizaciones para aplicaciones de terceros se incorporará en una versión futura.
Los límites de tasa para los clientes CIMD se incorporarán en una versión futura. Podrá establecer un límite de tasa específico para un cliente CIMD, así como un límite de tasa compartido sobre el tráfico agregado de todos los clientes CIMD en un inquilino.
Casos de uso
- Clientes MCP: Solo deben registrarse en CIMD una vez por implementación. Todas las instancias de esa implementación usan las mismas credenciales de registro. Para obtener más información sobre cómo Auth0 protege a los clientes y servidores MCP, consulte Auth for MCP.
- Integraciones de terceros: Aplicaciones de partners, plataformas SaaS y servicios externos que autentican usuarios en nombre de organizaciones. Estas aplicaciones administran sus propios metadatos de cliente y claves criptográficas, lo que permite realizar actualizaciones independientes y rotar claves sin compartir secretos.
Ejemplo de CIMD
"token_endpoint_auth_method": "none":
https://example-client.com/mcp-metadata.json
Cómo funciona
Fase 1: Registro
- Creación de la aplicación: El administrador del inquilino crea una aplicación CIMD en Auth0 de la siguiente manera:
- Selecciona Import from URL en el Auth0 Dashboard
- Realiza una solicitud POST al endpoint
/register, proporcionando elexternal_client_id
- Obtención de metadatos: Auth0 realiza una solicitud GET al dominio del cliente para recuperar el CIMD (
client.json). - Validación de seguridad: Auth0 mapea y valida la URL del CIMD según las reglas de validación de URL de CIMD, y valida el CIMD según las reglas de validación de CIMD, verificando, entre otras cosas, que el
external_client_idcoincida con la URL del CIMD. - Persistencia: Una vez validado, Auth0 almacena los metadatos del cliente en la base de datos.
- Confirmación: Auth0 devuelve una respuesta correcta; la aplicación se ha registrado correctamente como cliente CIMD en Auth0.
- Tarea iniciada por el usuario: El usuario inicia una tarea que requiere que la aplicación acceda a una API.
- Solicitud de autorización: La aplicación realiza una solicitud al Servidor de autorización de Auth0 y envía su URL de CIMD como
client_id. - Resolución del cliente: El Servidor de autorización de Auth0 consulta la base de datos para asociar la URL proporcionada (
client_id) con la configuración del cliente almacenada (external_client_id). - Consentimiento del usuario: Auth0 muestra una pantalla de consentimiento al usuario e identifica la aplicación mediante el
client_namerecuperado de los metadatos de CIMD. - Redirección: Después de que el usuario otorgue su consentimiento, Auth0 redirige al usuario de vuelta a la aplicación con un código de autorización.
- Intercambio de código: La aplicación intercambia el código de autorización por un token de acceso en el endpoint de token.
- Autorización completada: El Servidor de autorización de Auth0 devuelve un token de acceso donde
client_idse establece en la URL de CIMD. La aplicación ahora puede acceder a la API en nombre del usuario.
Requisitos previos
Configuración del inquilino
- Habilitar la compatibilidad con CIMD: Activa la opción Client ID Metadata Document Registration en la configuración del inquilino para indicar la compatibilidad con CIMD en los metadatos del Servidor de autorización de Auth0, lo que permite a los clientes detectar automáticamente esta funcionalidad al conectarse.
- Ve a Settings > Advanced y desplázate hacia abajo hasta la sección Settings.
- Activa Client ID Metadata Document Registration.
- Perfil de compatibilidad del parámetro Resource (opcional): Para los clientes MCP, recomendamos habilitar este perfil en la configuración del inquilino. Esto permite que el servidor de autorización procese solicitudes específicas de recursos (RFC 8707) comprobando el parámetro
resourcesi no se proporcionaaudience.
Tipos de cliente compatibles
- Tipo de aplicación: Debe ser una aplicación nativa o una aplicación web tradicional.
- Aplicación de terceros: Debe ser una aplicación de terceros (
is_first_party: false), sujeta a controles de seguridad mejorados. Una vez registrada, configure su cliente CIMD como una aplicación de terceros en Auth0.
Métodos de autenticación compatibles
client_secret_post, client_secret_basic o client_secret_jwt.
Según si el cliente es público o confidencial, Auth0 admite los siguientes métodos de autenticación para clientes CIMD:
- Clientes públicos:
- No se requiere autenticación del cliente en el endpoint de token; establezca
token_endpoint_auth_methodennoneen los metadatos del cliente - Deben usar Proof Key for Code Exchange (PKCE) en los flujos de autorización
- No se requiere autenticación del cliente en el endpoint de token; establezca
- Clientes confidenciales:
- Solo se admite la autenticación mediante Private Key JWT; establezca
token_endpoint_auth_methodenprivate_key_jwten los metadatos del cliente - Proporcione un
jwks_uripara alojar las claves públicas. Eljwks_uridebe compartir exactamente el mismo origen (esquema, host y puerto) que la URL de CIMD. Para obtener más información, consulte las reglas de validación JSON de CIMD.
- Solo se admite la autenticación mediante Private Key JWT; establezca
La autenticación mediante Private Key JWT está disponible solo para clientes Enterprise. Para obtener más información sobre los planes Enterprise, consulte Pricing o póngase en contacto con Auth0 Sales.
Los clientes CIMD que usan la autenticación mediante Private Key JWT deben implementar la rotación de claves generando un nuevo par de claves con un
kid nuevo y único.Registrar aplicaciones con CIMD manual
- Auth0 Dashboard
- Management API
Para registrar una aplicación con CIMD manual mediante el Auth0 Dashboard:
- Ve a Applications > Applications.
- Selecciona Create Application > Import from URL.
- Introduce la URL de CIMD. Luego, selecciona Preview. Auth0 valida la URL de CIMD según las reglas de validación de URL de CIMD.
- Si la URL de CIMD es válida, Auth0 carga el CIMD y lo valida según las reglas de validación de JSON de CIMD. Revisa la vista previa de los metadatos del cliente y corrige cualquier error de validación.
- Selecciona Create.
Configurar el cliente CIMD
is_first_party: false), que están sujetas a controles de seguridad mejorados. Una vez que hayas registrado tu cliente CIMD, configúralo como una aplicación de terceros en Auth0:
- Configurar la política de acceso a la API: Crea client grants para autorizar el acceso a las API
- Promover conexiones al nivel de dominio: Haz que las conexiones estén disponibles a nivel de dominio o de inquilino para autenticar a tus usuarios
Actualizar los metadatos del cliente
app_type y grant_types para que coincidan con los valores del CIMD alojado. Para obtener más información sobre los campos de CIMD, consulta Reglas de validación de JSON de CIMD.
En el Auth0 Dashboard:
- Ve a Applications > Applications y selecciona tu cliente CIMD.
- En la esquina superior derecha, selecciona Refresh Client Metadata.
- Selecciona Refresh Preview para previsualizar los metadatos más recientes del cliente en el CIMD. Revisa cualquier advertencia o error de validación.
- Selecciona Save.
Obtener un cliente CIMD
GET al endpoint /v2/clients/{clientId}, donde {clientID} es el ID de cliente generado por Auth0 asignado al cliente CIMD:
external_client_id o la URL de CIMD como parámetro de consulta al endpoint /v2/clients:
external_client_id, name, callbacks, token_endpoint_auth_method y otros.
Actualizar cliente CIMD
| Campo | Descripción |
|---|---|
app_type | El tipo de aplicación de Auth0. En CIMD, se asigna a partir de application_type y está restringido a native (para aplicaciones nativas) o regular_web (para aplicaciones web). |
grant_types | Los tipos de concesión de OAuth 2.0 permitidos. En CIMD, se restringe a authorization_code y refresh_token. Los demás tipos se filtran durante la asignación. |
jwt_configuration.alg | El algoritmo que se usa para firmar el ID Token. Como clientes estrictos de terceros, las aplicaciones CIMD suelen estar restringidas a algoritmos asimétricos seguros, como RS256, RS512 o PS256. |
description | Una descripción de texto libre del cliente. Se asigna directamente a partir de los metadatos de CIMD, con un límite máximo de 140 caracteres. |
oidc_conformant | Debe estar habilitado para clientes estrictos de terceros. Esto garantiza que el cliente siga las especificaciones de OIDC y, por lo general, no puede modificarse en los clientes CIMD. |
allowed_origins | Una lista de URL permitidas para el uso compartido de recursos entre orígenes (CORS). Normalmente se usa en aplicaciones basadas en navegador. |
web_origins | Una lista de URL permitidas para flujos web (por ejemplo, autenticación silenciosa). |
refresh_token.* | Configuración del comportamiento del token de actualización, incluidos rotation_type, leeway y varias opciones de duración. Estos valores controlan cuánto tiempo sigue siendo válido un token de actualización y si rota al usarse. |
organization_* | Configuración de flujos específicos de la organización, incluidos usage, require_behaviour, discovery_methods y default_organization. Estos determinan cómo interactúa el cliente con las Organizaciones de Auth0. |
client_metadata | Pares clave-valor arbitrarios que se usan para almacenar información adicional sobre el cliente que no se asigna a propiedades estándar de Auth0. |
require_proof_of_possession | Indica si el cliente debe demostrar la posesión de una clave, algo que suele usarse con DPoP o mTLS. |
PATCH al endpoint /v2/clients/{clientId}, donde {clientID} es el ID de cliente generado por Auth0 y asignado al cliente CIMD:
Reglas de validación de URL de CIMD
| Categoría | Regla | Requisito |
|---|---|---|
| Protocolo | HTTPS obligatorio | Debe usar el esquema https://. |
| Host | No localhost | Se rechazan localhost, 127.0.0.1 y ::1. |
| Nombre de host válido | Debe contener un nombre de host no vacío; las barras diagonales triples (por ejemplo, https:///) están prohibidas. | |
| Ruta | Componente de ruta | Debe contener una ruta más allá de la raíz /. |
| Sin segmentos de punto | No debe contener . ni .. (incluido %2e codificado) en la ruta. | |
| Restricciones | Límite de longitud | Máximo de 120 bytes. |
| Sin espacios en blanco | No se permiten espacios en blanco al principio ni al final. | |
| Formato | Debe ser una cadena no vacía que pueda analizarse como una URL. | |
| Prohibido | Sin credenciales | No se permiten nombre de usuario ni contraseña en la URL. |
| Sin fragmentos | No se permiten identificadores de fragmento (#). | |
| Sin consulta | No se permiten cadenas de consulta (?). | |
| Sin puerto 0 | El puerto 0 está reservado y prohibido. | |
| Codificación | Codificación porcentual | % debe ir seguido de exactamente dos dígitos hexadecimales. |
Reglas de validación de JSON de CIMD
- Propiedades no admitidas: Auth0 ignora las propiedades no admitidas durante la asignación y las informa como advertencias en la respuesta de validación.
- JWKS insertado: No se admite proporcionar un objeto
jwksinsertado en lugar de unjwks_uri, y esto desencadenará un errorinvalid_client_metadata. - Claves privadas: Se rechazará cualquier JWKS recuperado mediante
jwks_urique contenga material de clave privada (el parámetrod). - Seguridad de recuperación: Tanto el documento CIMD como
jwks_uriestán sujetos a límites de tamaño de 5 KB y 12 KB, respectivamente, y ninguno admite redirecciones HTTP.
| Property | Required | Type | Validation Rules | Auth0 Mapping |
|---|---|---|---|---|
client_id | Sí | String | Debe ser una URL HTTPS válida que coincida exactamente con la ubicación donde está alojado el documento. | external_client_id |
client_name | Sí | String | Debe ser una cadena no vacía. | name |
redirect_uris | Condicional | String Array | Obligatorio si grant_types incluye authorization_code o implicit. Deben ser URI HTTPS únicas (se permite loopback en aplicaciones nativas). | callbacks |
grant_types | Sí | String Array | Debe incluir al menos un tipo admitido (authorization_code o refresh_token). Los tipos no admitidos generan advertencias y se filtran. | grant_types |
application_type | No | String | Solo se permiten native o web. Los valores desconocidos se rechazan. El valor predeterminado es web. | app_type |
token_endpoint_auth_method | No | String | Admite none o private_key_jwt. Los métodos con secreto simétrico (por ejemplo, client_secret_post) están prohibidos. | token_endpoint_auth_method |
jwks_uri | Condicional | String | Obligatorio si token_endpoint_auth_method es private_key_jwt. Debe ser una URL HTTPS que comparta el mismo origen que client_id. | jwks_uri |
logo_uri | No | String | Debe ser una URL HTTP o HTTPS válida. | logo_uri |
description | No | String | Texto libre con un límite máximo de 140 caracteres. | description |
response_types | No | String Array | Se valida para garantizar la coherencia con OIDC, pero no se conserva. Genera una advertencia si contiene code y falta authorization_code en grant_types. | (Ninguno) |
Consideraciones de seguridad
Rotación de claves del cliente CIMD para la autenticación con private_key_jwt
kid nuevo y único. Si rota su clave privada y actualiza su JWKS con nuevo material de claves bajo el mismo kid, el registro CIMD de Auth0 rechaza la nueva clave y conserva la anterior. Esto garantiza que la rotación de claves requiera agregar claves nuevas de forma explícita, en lugar de reemplazarlas silenciosamente.
Asegúrese de actualizar el registro de sus claves en Auth0 después de rotarlas. Para obtener más información, consulte Rotar claves de firma.