> ## 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 implementar la autenticación sin contraseña con inicio de sesión integrado en aplicaciones de una sola página (SPA).

# Autenticación sin contraseña integrada para aplicaciones de una sola página (SPA)

export const ReleaseStageNotice = ({feature, stage, plans, contact, terms}) => {
  const stageTextMap = {
    "beta": "Beta",
    "ea": "Acceso anticipado"
  };
  const stageText = stageTextMap[stage] || "una etapa de lanzamiento del producto";
  const prsLink = "/docs/troubleshoot/product-lifecycle/product-release-stages";
  const linkify = (text, url) => {
    return <a href={url} target="_blank" rel="noreferrer" class="link">{text}</a>;
  };
  const includeDetails = (plans, contact, terms) => {
    const hasDetails = terms || plans || contact;
    if (!hasDetails) return null;
    return <span data-as="p">
            {plans && <>Esta funcionalidad está disponible en los {linkify(`planes ${plans}`, "https://auth0.com/pricing")}. </>}
            {contact && "Para participar, ponte en contacto con " + contact + ". "}
            {terms && <>Al usar esta funcionalidad, aceptas los términos aplicables de la prueba gratuita incluidos en el {linkify("Master Subscription Agreement", "https://www.okta.com/legal")} de Okta.</>}
        </span>;
  };
  return <Warning>
            <span data-as="p">
                <strong>La funcionalidad {feature} está en {linkify(stageText, prsLink)}.</strong>
            </span>

            {includeDetails(plans, contact, terms)}
        </Warning>;
};

<Warning>
  El inicio de sesión integrado para aplicaciones web usa [autenticación entre orígenes](/es/docs/authenticate/login/cross-origin-authentication) a menos que [configure un dominio personalizado](/es/docs/customize/custom-domains) para su inquilino. La autenticación entre orígenes usa cookies de terceros para permitir transacciones de autenticación seguras entre distintos orígenes.
</Warning>

<div id="using-auth0s-sdks-to-implement-embedded-login">
  ## Uso de los SDK de Auth0 para implementar el inicio de sesión integrado
</div>

Puede implementar el inicio de sesión <Tooltip tip="Sin contraseña: forma de autenticación que no depende de una contraseña como primer factor." cta="Ver glosario" href="/es/docs/glossary?term=Passwordless">sin contraseña</Tooltip> con el widget Lock de Auth0 o, si necesita un control total sobre la experiencia del usuario, implementarlo con Auth0.js:

* [Lock for Web](/es/docs/libraries/lock)
* [Referencia de Auth0.js](/es/docs/libraries/auth0js)

<div id="configure-cross-origin-resource-sharing-cors">
  ### Configurar el uso compartido de recursos entre orígenes (CORS)
</div>

Por motivos de seguridad, la URL de origen de tu aplicación debe figurar como una URL aprobada. Si todavía no la agregaste a **Allowed Callback URLs** de tu aplicación, tendrás que agregarla a la lista de **Allowed Origins (CORS)**.

1. Ve a [Auth0 Dashboard > Applications > Applications](https://manage.auth0.com/#/applications) y selecciona el nombre de tu aplicación para ver su configuración.
2. Busca **Allowed Origins (CORS)**, introduce la [URL de origen](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin) de tu aplicación y selecciona **Save Changes**.

<div id="customize-mfa">
  ## Personalizar MFA
</div>

<ReleaseStageNotice feature="MFA personalizable con los flujos Resource Owner Password Grant, Embedded o Token de actualización" stage="ea" terms="true" contact="Soporte de Auth0" />

Personalice <Tooltip tip="Autenticación multifactor (MFA): proceso de autenticación del usuario que utiliza un factor adicional al username y la contraseña, como un código por SMS." cta="Ver glosario" href="/es/docs/glossary?term=MFA">MFA</Tooltip> con flujos integrados. Use la API de MFA para permitir que los usuarios se inscriban y completen desafíos con los factores de su elección compatibles con su aplicación.

Cuando use [Lock for Web](/es/docs/libraries/lock#2-authenticating-and-getting-user-info), el endpoint `oauth/token` devuelve el error `mfa_required` e incluye el `mfa_token` necesario para usar la API de MFA y el parámetro `mfa_requirements` con una lista de los autenticadores que su aplicación admite actualmente:

```json lines theme={null}
{
  "error": "mfa_required",
  "error_description": "Multifactor authentication required",
  "mfa_token": "Fe26...Ha",
  "mfa_requirements": {
    "challenge": [
      { "type": "otp" },
      { "type": "push-notification" },
      { "type": "phone" },
      { "type": "recovery-code" }
      { "type": "email"} //solo funciona con challenge
    ]
  }
}
```

Use `mfa_token` para llamar al endpoint [`mfa/authenticator`](https://auth0.com/docs/api/authentication/muti-factor-authentication/list-authenticators), enumerar todos los factores en los que el usuario está inscrito y encontrar el mismo `type` que admite su aplicación. También debe obtener el `authenticator_type` correspondiente para emitir desafíos:

```json lines theme={null}
[
  {
    "type": "recovery-code",
    "id": "recovery-code|dev_qpOkGUOxBpw6R16t",
    "authenticator_type": "recovery-code",
    "active": true
  },
  {
    "type": "otp",
    "id": "totp|dev_6NWz8awwC8brh2dN",
    "authenticator_type": "otp",
    "active": true
  }
]
```

Aplique el desafío de MFA llamando al endpoint [`request/mfa/challenge`](https://auth0.com/docs/api/authentication/muti-factor-authentication/request-mfa-challenge).

Personalice aún más su flujo de MFA con Actions de Auth0. Para obtener más información, consulte [Actions Triggers: post-challenge - API Object](/es/docs/customize/actions/explore-triggers/password-reset-triggers/post-challenge-trigger/post-challenge-api-object).
