> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Aprenda a autenticar un cliente mediante mTLS.

# Autenticación con mTLS

<div id="mtls-in-oauthoidc">
  ## mTLS en OAuth/OIDC
</div>

Los flujos predeterminados de <Tooltip tip="OAuth 2.0: Marco de autorización que define protocolos y flujos de trabajo de autorización." cta="Ver glosario" href="/es/docs/glossary?term=OAuth">OAuth</Tooltip>/OIDC no siempre son seguros debido a los siguientes problemas:

* El uso de un <Tooltip tip="Secreto del cliente: Secreto que utiliza un cliente (aplicación) para autenticarse ante el Servidor de autorización; solo deben conocerlo el cliente y el Servidor de autorización, y debe ser lo suficientemente aleatorio como para que no pueda adivinarse." cta="Ver glosario" href="/es/docs/glossary?term=Client+Secret">Secreto del cliente</Tooltip> compartido como forma de autenticación del cliente.
* La posibilidad de que un <Tooltip tip="Token de acceso: Credencial de autorización, en forma de cadena opaca o JWT, que se utiliza para acceder a una API." cta="Ver glosario" href="/es/docs/glossary?term=access+token">token de acceso</Tooltip> sea utilizado por partes no autorizadas.

En 2020, el Internet Engineering Task Force (IETF) publicó en [RFC 8705](https://www.rfc-editor.org/rfc/rfc8705) la autenticación de cliente Mutual-TLS (mTLS) para abordar estos problemas. Con la autenticación mTLS, el certificado de cliente con una clave privada actúa como un Secreto del cliente en un flujo OAuth/OIDC para verificar la identidad del cliente. Si un cliente ya está autenticado en la capa de red, no se necesita un Secreto del cliente en la capa de aplicación. Además, los certificados de cliente pueden usarse con varios servidores para demostrar la identidad de un cliente ante un <Tooltip tip="Servidor de recursos: Servidor que aloja recursos protegidos. Los servidores de recursos aceptan y responden a solicitudes de recursos protegidos." cta="Ver glosario" href="/es/docs/glossary?term=resource+server">servidor de recursos</Tooltip>. Ten en cuenta que existen otros enfoques para resolver los problemas anteriores, concretamente [Private Key JWT](/es/docs/get-started/authentication-and-authorization-flow/authenticate-with-private-key-jwt) y [DPoP](https://datatracker.ietf.org/doc/html/rfc9449), respectivamente.

Para proteger un flujo OAuth con mTLS, los clientes envían un certificado mTLS al punto de terminación TLS en el extremo de la red del cliente mientras se establece la conexión TLS. Antes de que el <Tooltip tip="Servidor de autorización: Servidor centralizado que contribuye a definir los límites del acceso de un usuario. Por ejemplo, su servidor de autorización puede controlar los datos, las tareas y las funciones disponibles para un usuario." cta="Ver glosario" href="/es/docs/glossary?term=authorization+server">servidor de autorización</Tooltip> procese la solicitud, primero debe verificar el certificado mTLS del cliente.

<Frame>
  <img src="https://mintcdn.com/translations/pvjQqAy3EB2TK6NP/docs/images/cdy7uua7fh8z/4SlprP2uTYMCoLIPLsOl4v/d17575139419453d8772081ad20b7499/HRI_diagrams_-_mtls_diagram_1__2_.png?fit=max&auto=format&n=pvjQqAy3EB2TK6NP&q=85&s=e9b4bf1e43bb371603c0233138a12405" alt="" width="1500" height="1260" data-path="docs/images/cdy7uua7fh8z/4SlprP2uTYMCoLIPLsOl4v/d17575139419453d8772081ad20b7499/HRI_diagrams_-_mtls_diagram_1__2_.png" />
</Frame>

De forma opcional, mTLS también puede usarse para garantizar que un token de acceso solo sea utilizado por la parte prevista, lo que se conoce como Sender Constraining o Token Binding. Cuando el cliente llama al endpoint `/oauth/token` en el servidor de autorización mediante una conexión mTLS, el token de acceso resultante contiene información que el servidor de recursos utiliza para verificar que el certificado TLS del cliente coincide con el del token de acceso.

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7qocbfqySAnu85ph6WVSGU/ee8cd3514ed1bb6fea554cbd63d230cf/HRI_diagrams_-_mtls_diagram_2__1_.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=c50dca734167a1de3725ad42a4719bf0" alt="" width="2180" height="1530" data-path="docs/images/cdy7uua7fh8z/7qocbfqySAnu85ph6WVSGU/ee8cd3514ed1bb6fea554cbd63d230cf/HRI_diagrams_-_mtls_diagram_2__1_.png" />
</Frame>

**Nota**: la autenticación de cliente mTLS y el Token Binding de mTLS pueden utilizarse de forma independiente. La autenticación de cliente mTLS puede utilizarse sin Token Binding de mTLS, y el Token Binding de mTLS puede utilizarse con otras formas de autenticación del cliente, como Secreto del cliente o Private Key <Tooltip tip="JSON Web Token (JWT): Formato estándar de ID Token (y, con frecuencia, formato de Token de acceso) que se utiliza para representar claims de forma segura entre dos partes." cta="Ver glosario" href="/es/docs/glossary?term=JWT">JWT</Tooltip>. Incluso si se utilizan otras formas de autenticación del cliente, el cliente sigue enviando el certificado de cliente al servidor de autorización para el Token Binding de mTLS.

<div id="mtls-at-auth0">
  ## mTLS en Auth0
</div>

mTLS para Auth0 se basa en [dominios personalizados](/es/docs/customize/custom-domains) y aprovecha la infraestructura mTLS existente del cliente para realizar el aprovisionamiento y la verificación de certificados.

Las llamadas autenticadas de clientes a Auth0 que normalmente requieren un Secreto del cliente se envían primero al perímetro del cliente. Esto ya ocurre para los <Tooltip tip="Dominio personalizado: dominio de terceros con un nombre especializado o personalizado." cta="Ver glosario" href="/es/docs/glossary?term=custom+domains">dominios personalizados</Tooltip> que usan certificados administrados por el cliente. El perímetro del cliente realiza el handshake de mTLS con el cliente y valida el certificado del cliente. Una vez verificado el certificado del cliente, la solicitud se reenvía al dominio de borde del inquilino en Auth0, incluyendo el certificado del cliente validado en un encabezado HTTP junto con la `cname-api-key` correcta, según la funcionalidad de dominios personalizados.

<Frame>
  <img src="https://mintcdn.com/translations/c0RQ9V0YAcT0-8l5/docs/images/cdy7uua7fh8z/7p3tqUtBeMAp4fBbbemhOh/379a6d3b91ad37beb8cd01a20c1b13e5/HRI_diagrams_-_mtls_diagram_3__1_.png?fit=max&auto=format&n=c0RQ9V0YAcT0-8l5&q=85&s=b590e1ff26dde96571bf65eb5a4fef6e" alt="" width="2180" height="1530" data-path="docs/images/cdy7uua7fh8z/7p3tqUtBeMAp4fBbbemhOh/379a6d3b91ad37beb8cd01a20c1b13e5/HRI_diagrams_-_mtls_diagram_3__1_.png" />
</Frame>

<div id="call-the-authorization-server">
  ## Llamar al servidor de autorización
</div>

Dado que mTLS sirve tanto para la autenticación del cliente como para la vinculación del token de acceso, el cliente debe saber si estas funciones están habilitadas en el servidor de autorización. Además, los endpoints mTLS y no mTLS de un servidor de autorización pueden estar expuestos en dominios diferentes.

Para obtener detalles de configuración sobre el servidor de autorización, el cliente envía una solicitud GET al endpoint de [OpenID Connect Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html): `https://<custom-domain>/.well-known/openid-configuration`

Una respuesta satisfactoria devuelve el documento de descubrimiento de OIDC, o un objeto JSON que enumera las propiedades y los endpoints del servidor de autorización, incluidos los relacionados con mTLS.

Si la autenticación de cliente mediante mTLS está habilitada, el documento de descubrimiento de OIDC incluye la propiedad `token_endpoint_auth_methods_supported`, que contiene `tls_client_auth` o `self_signed_tls_client_auth`:

```json lines theme={null}
{
  ...
  "token_endpoint_auth_methods_supported": ["tls_client_auth"]
  ...
}
```

Si el Token Binding de mTLS está habilitado, el documento de descubrimiento de OIDC establece la propiedad  `tls_client_certificate_bound_access_tokens` en `true:`

```json lines theme={null}
{
  ...
  "tls_client_certificate_bound_access_tokens": true
  ...
}
```

Los entornos que admiten alias de endpoints mTLS exponen una nueva propiedad, `mtls_endpoint_aliases`, que contiene una lista de endpoints compatibles con mTLS. Para los clientes que admiten mTLS, los endpoints que aparecen en `mtls_endpoint_aliases` tienen prioridad sobre los mismos endpoints expuestos fuera de `mtls_endpoint_aliases`.

En el siguiente ejemplo de código, la propiedad `token_endpoint` se expone dos veces. El endpoint que debe usarse para las llamadas mTLS aparece en `mtls_endpoint_aliases`, o bien `https://mtls.auth.bank.com/oauth/token`:

```json lines theme={null}
{
  ...
  "mtls_endpoint_aliases": {
"token_endpoint": "https://mtls.auth.bank.com/oauth/token"
  },
  "token_endpoint": "https://auth.bank.com/oauth/token",
  "pushed_authorization_request_endpoint": "https://auth.bank.com/oauth/par",
  ...
}
```

Si un endpoint no aparece en `mtls_endpoint_aliases`, use el mismo endpoint que figura fuera de `mtls_endpoint_aliases`. En el ejemplo anterior, `pushed_authorization_request_endpoint` no aparece en `mtls_endpoint_aliases`. En consecuencia, use `pushed_authorization_request_endpoint`, expuesto fuera de `mtls_endpoint_aliases`, o `https://auth.bank.com/oauth/par`.

Para obtener más información, consulte la [sección sobre alias de endpoint](https://www.rfc-editor.org/rfc/rfc8705#name-metadata-for-mutual-tls-end) de la RFC 8705.

<div id="call-the-resource-server">
  ## Llamar al servidor de recursos
</div>

Una vez que un cliente recibe un token de acceso, puede acceder a recursos protegidos en un servidor de recursos. Si Token Binding de mTLS está habilitado, el servidor de autorización devuelve el documento de descubrimiento de OIDC que contiene la propiedad `tls_client_certificate_bound_access_tokens`.

Cuando el cliente llama al servidor de recursos con un token de acceso vinculado a mTLS, el servidor de recursos solicita un certificado mTLS del cliente durante el protocolo de enlace TLS. El servidor de recursos debe rechazar las solicitudes cuyo token de acceso no coincida con ese certificado de cliente, con un código de estado HTTP 401 y un código de error `invalid_token`. Para obtener más información, consulte [Configurar el servidor de recursos para la restricción del remitente](/es/docs/secure/sender-constraining/configure-sender-constraining/configure-resource-server-for-sender-constraining).

<div id="learn-more">
  ## Más información
</div>

* [Configurar la autenticación mediante mTLS](/es/docs/get-started/applications/configure-mtls)
