> ## 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.

> Describe cómo usar enlaces universales en lugar de esquemas de URL personalizados para verificar la legitimidad de los datos de autenticación.

# Medidas contra la suplantación de identidad de aplicaciones

Las aplicaciones nativas usan el [Flujo de código de autorización con PKCE](/es/docs/get-started/authentication-and-authorization-flow/authorization-code-flow-with-pkce) de autenticación y emplean un `redirect_uri` para devolver el control a la aplicación después del inicio de sesión. Después de que el URI se carga en el navegador del dispositivo, la aplicación normalmente se abre automáticamente para que el usuario pueda continuar con el proceso.

Históricamente, las aplicaciones móviles usaban [esquemas de URI personalizados](https://developers.google.com/identity/protocols/oauth2/native-app#installed_app_redirect_methods) (por ejemplo, `com.mycompany.myapp://oauth2redirect`). Sin embargo, los esquemas de URI personalizados plantean un riesgo, ya que más de una aplicación en el dispositivo puede registrar el mismo esquema. Los sistemas operativos móviles no incluyen mecanismos integrados para garantizar que la aplicación que recibe la redirección sea la correcta. En este escenario, las aplicaciones maliciosas suplantan a las legítimas y reciben la respuesta de autorización (incluidos los tokens) sin que el usuario lo advierta, especialmente si el inicio de sesión único (SSO) está activo debido a la existencia de una sesión legítima previa, en cuyo caso no se requiere ninguna interacción adicional del usuario. PKCE realmente no ayuda en estos casos, ya que la aplicación maliciosa puede iniciar el flujo de login y esperar a recibir el callback sin que el usuario interactúe.

Las aplicaciones que se ejecutan en una máquina local (por ejemplo, aplicaciones de escritorio o CLI) usan la interfaz de loopback para los callbacks (por ejemplo, [http://127.0.0.1:51089/callback](http://127.0.0.1:51089/callback) o [http://localhost:61024/callback](http://localhost:61024/callback)) y están expuestas a un riesgo similar. En este caso, otra aplicación en la misma máquina podría escuchar en el mismo puerto para interceptar la respuesta.

Nos referimos tanto a los esquemas de URI personalizados como a los URI de loopback como URI de callback no verificables porque el Servidor de autorización no puede verificar la aplicación receptora en ninguno de los dos escenarios.

<div id="recommended-mitigations-for-mobile-applications">
  ## Medidas de mitigación recomendadas para aplicaciones móviles
</div>

<div id="claimed-https-uris-universal-links-app-links">
  ### URI HTTPS verificadas (Universal Links / App Links)
</div>

Los sistemas operativos móviles modernos admiten las **URI HTTPS verificadas**, que le permiten asociar un dominio web que usted controla con su aplicación móvil. Las URI HTTPS verificadas se conocen como:

* Universal Links en iOS
* App Links en Android

Las URI HTTPS verificadas garantizan que solo su aplicación gestione la URL de devolución de llamada asociada y protegen contra el acceso no autorizado a datos confidenciales de autenticación.

<Note>
  Auth0 **recomienda encarecidamente** usar URI HTTPS verificadas como URI de redirección para todas las aplicaciones nativas.

  * Para iOS: Consulte [Support Universal Links](https://developer.apple.com/documentation/xcode/allowing-apps-and-websites-to-link-to-your-content/#Support-universal-links).
  * Para Android: Consulte [Android App Links](https://developer.android.com/training/app-links).
</Note>

<div id="recommended-mitigations-for-all-application">
  ## Mitigaciones recomendadas para todas las aplicaciones
</div>

Auth0 no puede verificar la legitimidad de la aplicación que recibe los resultados de la transacción de autenticación si:

* Su aplicación no puede admitir URI HTTPS declarados debido a la compatibilidad requerida con versiones anteriores de sistemas operativos móviles
* Su aplicación es una aplicación de escritorio o de CLI

Tal como se define en la especificación [OAuth2 for Native Apps](https://datatracker.ietf.org/doc/html/rfc8252#section-8.6), Auth0 proporciona un mecanismo para mostrar una pantalla de confirmación al usuario. Los usuarios confirman que la aplicación que recibe el resultado de la autenticación es la que pretendían usar. Cuando se utiliza un URI de callback no verificable, se solicita al usuario que verifique la aplicación en cada transacción de autenticación.

La pantalla de confirmación se muestra cuando:

1. El `redirect_uri` presente en la solicitud utiliza un URI no verificable (es decir, un esquema de URI personalizado o un URI de loopback).
2. No se le ha mostrado al usuario ninguna otra pantalla en la transacción de inicio de sesión actual (por ejemplo, cuando se muestra una [pantalla de consent](/es/docs/get-started/applications/third-party-applications/user-consent-and-third-party-applications) para aplicaciones de terceros, o cuando se requiere MFA).

En estos casos, se presenta una pantalla de confirmación al usuario final.

<Frame>
  <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/consent-pompt-uris.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=8a0550c3a720e2e31482d9bae953c1a8" alt="Medidas contra la suplantación de aplicaciones: pantalla de confirmación" width="298" height="408" data-path="docs/images/cdy7uua7fh8z/consent-pompt-uris.png" />
</Frame>

La pantalla de confirmación no se muestra en flujos heredados no conformes a OIDC. Para obtener información sobre cómo aplicar mayor protección a sus inquilinos y aplicaciones, consulte [Adoptar la autenticación conforme a OIDC](/es/docs/authenticate/login/oidc-conformant-authentication).

<div id="prompt-customization">
  #### Personalización de la pantalla
</div>

La pantalla de confirmación usa la marca y la configuración personalizadas que definiste para las pantallas de consent existentes que se usan en aplicaciones de terceros. Para obtener más información, consulta la sección Prompts de [Personalizar las plantillas de página de Universal Login](/es/docs/customize/login-pages/universal-login/customize-templates).

<Warning>
  Auth0 **recomienda encarecidamente** no desactivar esta protección en producción. Las aplicaciones maliciosas en el dispositivo podrían solicitar `id_tokens` y `access_tokens` sin ninguna interacción del usuario ni ninguna otra indicación de que haya ocurrido algo.
</Warning>

Puedes configurar la pantalla de confirmación como una configuración global del inquilino o a nivel de aplicación. La configuración a nivel de aplicación tiene prioridad sobre la configuración global a nivel de inquilino.

**A nivel de aplicación**

1. [Ve a Auth0 Dashboard > Applications > configuración de la aplicación > Advanced > OAuth](https://manage.auth0.com/#/applications/settings).
2. Desplázate hasta la configuración **Non-Verifiable Callback URI End-User Confirmation**.
3. Activa el interruptor para habilitar la pantalla o desactívalo para deshabilitarla.

<Frame>
  <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/custom-uri-override.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=e5f9a2c190540fb9dc264e9ae1819cdf" alt="Auth0 Dashboard>Settings>Advanced" data-og-width="602" width="602" data-og-height="227" height="227" data-path="docs/images/cdy7uua7fh8z/custom-uri-override.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/custom-uri-override.png?w=280&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=bdfad6eed55d85238b3912c05c1796b7 280w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/custom-uri-override.png?w=560&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=1be8b875e055586c6282840a007fc4b2 560w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/custom-uri-override.png?w=840&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=1d1ede7f25342c71af2eb5344e661335 840w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/custom-uri-override.png?w=1100&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=fa90ee9d0979769310b2c1b04bb34bdd 1100w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/custom-uri-override.png?w=1650&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=3ee0c4223d309a46dd7eb1026934599b 1650w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/custom-uri-override.png?w=2500&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=bc7bafe44cd3c098ce3e8263658c795a 2500w" />
</Frame>

**Global**

1. Ve a [Auth0 Dashboard > Settings > Advanced](https://manage.auth0.com/#/tenant/advanced).
2. Busca la configuración **Non-Verifiable Callback URI End-User Confirmation**.
3. Activa el interruptor para habilitar la pantalla.

<Frame>
  <img src="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/enable-non-verifiable-callback.png?fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=9e2585711e79f97da564af4fd4f13566" alt="Auth0 Dashboard>Tenant Settings>Advanced>Skip Custom URI toggle" data-og-width="500" width="500" data-og-height="241" height="241" data-path="docs/images/cdy7uua7fh8z/enable-non-verifiable-callback.png" data-optimize="true" data-opv="3" srcset="https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/enable-non-verifiable-callback.png?w=280&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=b2325296b96c1182023a05799dd18dde 280w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/enable-non-verifiable-callback.png?w=560&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=2e9477e113f6ed441ce14c433de54735 560w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/enable-non-verifiable-callback.png?w=840&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=fc23d572bc5f4fb6159aad54830154ef 840w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/enable-non-verifiable-callback.png?w=1100&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=22239c99293ffe8a9bb33df67dce8f6b 1100w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/enable-non-verifiable-callback.png?w=1650&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=398dfa4bb83d4efb44c5a97e5810e541 1650w, https://mintcdn.com/translations/mMSz-RNYLuOm2GmQ/docs/images/cdy7uua7fh8z/enable-non-verifiable-callback.png?w=2500&fit=max&auto=format&n=mMSz-RNYLuOm2GmQ&q=85&s=3a5222a50191cdd221639f5c3fc04524 2500w" />
</Frame>
