Saltar al contenido principal
Auth0 está dejando obsoleto el uso del endpoint /passwordless/start desde aplicaciones confidenciales cuando Auth0 no puede autenticar que la llamada se realiza en nombre de la aplicación. usa el término ‘confidential’ para referirse a las aplicaciones que pueden almacenar secretos. En Auth0, esas son las ‘Regular Web Applications’, que sirven páginas web desde una aplicación de backend. Las Single Page Applications y las Native Applications se consideran aplicaciones ‘public’ y no se ven afectadas por este cambio. Auth0 puede autenticar las llamadas a /passwordless/start cuando incluyen un client_secret como parámetro, o cuando se realizan desde la página de Login personalizada en Classic Login y reenvían el parámetro state.

Funcionalidades afectadas

Si alguna de sus aplicaciones llama actualmente al endpoint /passwordless/start directamente para iniciar la autenticación desde una aplicación web y no envía client_secret como parámetro, esta deprecación le afecta. Si está implementando autenticación sin contraseña a través de la página de Classic Login y cambió la forma predeterminada en que se inicializan las bibliotecas de Auth0, también podría verse afectado. Puede verificar si está afectado revisando los registros del inquilino, filtrando por “Deprecation Notice” y comprobando si hay registros que indiquen “Enforce client authentication for passwordless connections”. También puede realizar esta búsqueda directamente con la siguiente consulta: type:depnote AND description:*passwordless*. Tenga en cuenta que esta consulta específica solo funciona para inquilinos de nube pública, ya que en la nube privada no se puede buscar en los logs por el campo description.

Actions

Si llama al endpoint /passwordless/start sin la autenticación de aplicación adecuada, debe:
  • Seguir las instrucciones que se describen a continuación para ajustar el código y llamar correctamente a /passwordless/start.
  • Revisar sus registros del inquilino para verificar que el cambio se haya realizado correctamente y que no se estén generando logs de deprecación para “Enforce client authentication for passwordless connections”.
  • En la sección Migrations de Configuración avanzada del Tenant, active el interruptor Enforce client authentication for passwordless connections.
Hay algunos casos de uso que podrían verse afectados, pero en cada uno la ruta de migración es bastante sencilla:

Llamadas a la API desde el backend

Para cualquier llamada desde tu backend al endpoint /passwordless/start, la llamada debe incluir el como parámetro. Si haces una solicitud POST directamente a /passwordless/start, incluye client_secret como parte de la carga útil: Si usa un SDK, agregue el parámetro al método que inicia el flujo sin contraseña. Esto es diferente en cada SDK, y todavía no se han actualizado todos. Si usa un SDK que no se ha actualizado, puede realizar la llamada HTTP directamente hasta que se complete esa actualización.

Auth0.js o Lock.js en la página de Classic Login

Si la página de Classic Login se usa para la autenticación sin contraseña de una aplicación web, hará llamadas al endpoint /passwordless/start, ya sea mediante Lock.js o Auth0.js. Dado que no se puede almacenar un Secreto del cliente en una página web, la forma de autenticar la llamada es reenviar el parámetro state que se recibe en la página de Classic Login al endpoint /passwordless/start. Ese parámetro se almacena en el campo config.internalOptions de la página de login personalizada. Las plantillas predeterminadas para personalizar la página de login lo usan de la siguiente manera al inicializar Lock.js o auth0.js:
var lock = new Auth0Lock(
  config.clientID, 
  config.auth0Domain, 
  {
    auth: {
      // .. otros campos configurados
      params: {
       scope: config.internalOptions.scope,
       _csrf: config.internalOptions._csrf,
       state: config.internalOptions.state,
      }
    }
  });
var params = Object.assign({
    scope: config.internalOptions.scope,
    _csrf: config.internalOptions._csrf,
    state: config.internalOptions.state,
  }, {
    // ...parámetros de autenticación
  });

var webAuth = new auth0.WebAuth(params);
Compruebe en la implementación de su página personalizada que no haya eliminado ese código.

Llame a /passwordless/start desde el cliente en una aplicación web

Si llama al endpoint /passwordless/start desde una página que usa JavaScript (por ejemplo, con Auth0.js en la página) en una aplicación web tradicional, no podrá especificar un Secreto del cliente en una llamada hecha con JavaScript. Si ese es el caso de su aplicación, deberá modificarla para que /passwordless/start se invoque desde el backend de su aplicación web, en lugar de hacerlo desde el frontend.

Límites de frecuencia

Una consecuencia de agregar autenticación de cliente a /passwordless/start es que Auth0 puede confiar en los encabezados enviados con la solicitud. Si configura el encabezado auth0-forwarded-for, la dirección IP aparecerá en los registros y se usará con fines de . Las solicitudes autenticadas a /passwordless/start se tratarán como solicitudes autenticadas normales a la API y se les aplicará el límite de frecuencia global correspondiente de Authentication API.