Saltar al contenido principal
La funcionalidad de migración de usuarios utiliza una función principal de Auth0 llamada Bases de datos personalizadas, combinada con endpoints URL del plugin Login by Auth0, para permitir que los usuarios se autentiquen con cuentas de usuario de WordPress existentes. Para obtener más información sobre las bases de datos personalizadas, consulta Conexiones de base de datos personalizadas.

Cómo funciona

Cuando habilita la migración de datos, el plugin expone dos endpoints seguros que permiten a Auth0 autenticar usuarios con cuentas de WordPress. Estos endpoints están protegidos con un token secreto y pueden configurarse para permitir solo las direcciones IP que utiliza Auth0. El flujo de inicio de sesión es el siguiente:
  1. Un usuario intenta iniciar sesión con un formulario de inicio de sesión de Auth0 (integrado en su sitio o alojado en Auth0).
  2. Si Auth0 no encuentra un usuario asociado a las credenciales proporcionadas en su conexión de base de datos, llama al endpoint de migración en su sitio de WordPress con las credenciales del usuario y el token de migración.
  3. El plugin busca un usuario en su base de datos de WordPress con el nombre de usuario/correo electrónico proporcionado y verifica la contraseña.
  4. Si el usuario se autentica correctamente, Auth0 crea al usuario en la conexión de base de datos de su sitio, lo autentica e inicia su sesión.
  5. La próxima vez que el usuario inicie sesión, usará su usuario de Auth0 y se omitirá el endpoint de migración.
La migración de usuarios debe configurarse cuando el sitio se conecta por primera vez a Auth0. Si intenta activar o desactivar scripts personalizados de base de datos para una conexión de base de datos que ya ha tenido usuarios, se producirá un error. Consulte la sección Solución de problemas para obtener más información sobre cómo cambiar entre modos.

Configuración inicial y configuración

La forma más sencilla de configurar la migración de usuarios es usar el asistente de configuración la primera vez que se instala el plugin. Para obtener más información sobre el proceso, consulta Instalar Login by Auth0. Si el asistente de configuración de la migración de usuarios no pudo completarse o quieres ver el proceso con más detalle, sigue los pasos que se indican a continuación. Una vez más, este procedimiento parte de cero con una conexión de base de datos que no tiene usuarios. El siguiente proceso debe realizarse en un sitio sin tráfico o con el modo de mantenimiento activado.
  1. Cree y configure correctamente una aplicación, y cree y active una conexión de base de datos vacía para la aplicación. Pueden ser las mismas que se crearon durante el proceso estándar del Asistente de configuración, o bien puede crearlas desde cero. Para obtener más información sobre el Asistente de configuración, consulte Instalar Login by Auth0.
  2. En la pantalla Auth0 > Settings de WordPress, asegúrese de que el dominio, el ID de cliente y el Secreto del cliente de la aplicación estén guardados en los campos correspondientes de la pestaña Basic.
  3. En la vista Advanced, habilite la opción User Migration Endpoints y seleccione Save Changes. Si utiliza configuraciones basadas en constantes, establezca AUTH0_ENV_MIGRATION_WS en true y AUTH0_ENV_MIGRATION_TOKEN en una cadena aleatoria segura de al menos 16 caracteres, sin comillas simples ni barras invertidas.
  4. En la configuración, ahora deberías ver un Token de seguridad. Mantén esta página abierta, ya que necesitarás este valor más adelante en el proceso.
  5. En el Auth0 Dashboard, vaya a la conexión de base de datos que quiera usar y habilite Requiere username y Importar usuarios a Auth0.
  6. Selecciona la vista Custom Database y activa Use my own database.
  7. Debería haber dos pestañas debajo de esta configuración, en Database Action Scripts: una para Login y otra para Get User.
  8. Seleccione la vista Login, elimine el código existente, copie el código de db-login.js del repositorio de GitHub y péguelo en el editor de código.
  9. Este paso es para las versiones 3.10.0 y anteriores: Busque {THE_WS_URL} y sustitúyalo por la URL del sitio de su instancia de WordPress, seguida de /index.php?a0_action=migration-ws-login. La URL del sitio se encuentra en la pantalla Settings > General de wp-admin. Puede comprobarlo pegando la URL completa en el navegador. Debería ver {"status":401,"error":"Unauthorized"}.
  10. Este paso es para las versiones 3.10.0 y anteriores: Busque {THE_WS_TOKEN} y reemplácelo por el token que aparece en la configuración User Migration Endpoints.
  11. No debería haber errores en el editor. Si todo está bien, haz clic en Save en la parte superior.
  12. Este paso es para la versión 3.11.0 y posteriores: Desplázate hacia abajo hasta Settings y agrega las siguientes variables de configuración:
    • endpointUrl configurado con la URL del sitio de tu instancia de WordPress (wp-admin > Settings > General > campo “Site URL”), seguida de /index.php?a0_action=.
    • migrationToken configurado con el valor del token de seguridad que aparece en el paso 4 anterior.
    • userNamespace configurado con el nombre de tu aplicación en Auth0 o cualquier otro valor que incluya únicamente letras, números y guiones.
    Configuración personalizada de base de datos del plugin de WordPress
  13. Haga clic en el botón Try en la parte superior y use una cuenta válida de usuario de WordPress en el formulario que aparece. Debería ver “El perfil es” seguido de los datos del usuario. Si no es así, consulte la sección Resolución de problemas que aparece a continuación.
  14. Seleccione la vista Get User, elimine el código existente, copie el código de db-get-user.js del repositorio de GitHub y péguelo en el editor de código.
  15. Este paso es para la versión 3.10.0 y anteriores: Busque {THE_WS_URL} y reemplácelo por la URL del sitio de su instancia de WordPress, seguida de /index.php?a0_action=migration-ws-get-user. La URL del sitio se encuentra en la pantalla Settings > General de wp-admin. Puede probarlo pegando la URL completa en su navegador. Debería ver {"status":401,"error":"Unauthorized"}.
  16. Este paso es para la versión 3.10.0 y anteriores: Busque {THE_WS_TOKEN} y reemplácelo por el token que aparece en la configuración de User Migration Endpoints.
  17. No debería haber errores en el editor. Si todo está bien, haz clic en Save.
  18. Haz clic en el botón Try en la parte superior y, en el formulario que aparece, usa una dirección de correo electrónico asociada a una cuenta de usuario válida de WordPress. Deberías ver “The profile is” seguido de los datos del usuario. Si no es así, consulta la sección Troubleshooting a continuación.
  19. En una nueva sesión del navegador, ve a una página de Login del sitio de WordPress e intenta iniciar sesión (el usuario no debería existir todavía en la base de datos). Verás que el proceso de inicio de sesión tarda un poco más de lo habitual al principio, pero debería completarse correctamente. Los inicios de sesión posteriores serán más rápidos.
  20. (OPCIONAL) Para activar seguridad adicional en los endpoints de migración, ve a la pantalla Auth0 > Settings en WordPress, activa esta opción y luego haz clic en Save Changes. Intenta iniciar sesión con un usuario diferente para comprobar que Auth0 todavía puede acceder a los endpoints.
Llegados a este punto, la configuración de migración de usuarios está completa y los usuarios existentes de WordPress se migrarán de forma gradual a la Conexión de base de datos de Auth0.

Solución de problemas

Los problemas con la migración de usuarios suelen deberse a unas pocas causas:
  • URL o token incorrectos en los scripts personalizados de base de datos.
  • Lista de IP permitidas activada, pero con direcciones IP incorrectas.
  • Endpoints restringidos o almacenados en caché en tu instancia de WordPress.
La mejor manera de empezar a solucionar el problema es usar el botón Try del script de Login que se encuentra en la vista Custom Database de la conexión de base de datos que se está usando en Auth0 Dashboard > Authentication > Database. A continuación, se muestran los mensajes de error que podrías ver y los pasos que debes seguir para corregirlos.

Token inesperado < en JSON en la posición 0

Esto significa que el script personalizado no está recibiendo los datos en un formato que pueda usar. Lo más probable es que esto se deba a una URL de endpoint incorrecta en el script de la base de datos. Primero, copie la URL de la línea 10 del script y péguela en su navegador. Si el endpoint es correcto, debería mostrar uno de estos dos mensajes: {"status":401,"error":"Unauthorized"} // or {"status":403,"error":"Forbidden"} Si lo que ve es la página de inicio o un error 404, entonces la URL es incorrecta. Busque la URL de su sitio en Settings > General > Site URL en la administración de WordPress. Agregue /index.php?a0_action=migration-ws-login al final para el script de Login y /index.php?a0_action=migration-ws-get-user al final para el script de Get User.
  • Para las versiones 3.10.0 y anteriores: El valor de la URL debe aparecer en el propio script como primer parámetro en la llamada a request.post.
  • Para las versiones 3.11.0 y posteriores: El valor del token debe guardarse en una variable de configuración. Agregue lo siguiente a la primera línea de la función y use el botón Try para ver qué se almacena en endpointUrl:
callback(null, configuration); Si está seguro de que las URL son correctas y aun así sigue teniendo este problema, consulte con su proveedor de hosting para asegurarse de que esas URL no estén en caché ni restringidas de ninguna manera.

Correo electrónico o contraseña incorrectos

Este es el error predeterminado que se muestra si se produce cualquier otro problema. La forma más sencilla de diagnosticar lo que está ocurriendo es mostrar temporalmente el error que se devuelve (de forma predeterminada, estos errores son opacos para evitar mostrar información que pueda dar pistas a los atacantes). En la línea 30 del script de Login, cambie: callback(null); por: callback(wpUser.error); Guarde el script e intente la conexión de nuevo. Debería ver uno de los siguientes mensajes y poder identificar el problema con los pasos que se indican a continuación. Una vez que haya resuelto el problema, vuelva a cambiar el script para dejarlo como estaba.

Prohibido

Esto significa que los endpoints de migración están desactivados en tu instalación de WordPress. En WordPress, ve a Auth0 > Settings > Advanced y activa User Migration Endpoints. Asegúrate de que el token que aparece allí sea el mismo que se usa en ambos scripts de base de datos personalizados:
  • Para las versiones 3.10.0 y anteriores: El valor del token debe aparecer en el propio script después de access_token:
  • Para las versiones 3.11.0 y posteriores: El valor del token debe guardarse en una variable de configuración. Añade lo siguiente en la primera línea de la función y usa el botón Try para ver qué se almacena en migrationToken:
callback(null, configuration);

No autorizado

Esto significa que la lista de IP permitidas para la migración está activada, pero la dirección IP entrante no figura en la lista. Justo debajo del script de Login debería ver una lista de direcciones IP:
Migración de usuarios de WordPress - Direcciones IP de Auth0
Asegúrese de que todas esas direcciones IP aparezcan en WordPress, en Auth0 > Settings > Advanced, dentro del plugin:
Migración de usuarios de WordPress - Lista de IP permitidas
Si una o más de las direcciones IP que aparecen en Auth0 no figuran en WordPress, agregue las que falten en el campo y guarde la página de configuración. Además, cree una publicación en la comunidad de Auth0 (y etiquétela como “wordpress”) que incluya las direcciones IP faltantes, para que podamos solucionar el problema.

No autorizado: falta el encabezado de autorización

El no está presente en el script de la base de datos (línea 16), o su servidor no está procesando los encabezados correctamente. Revise el script de Login y asegúrese de que el token exista y coincida con el de WordPress. Si el token está ahí y es correcto, tendrá que contactar con su proveedor de hosting para habilitar el procesamiento del encabezado Authorization. Para obtener ayuda con la solución de problemas del servidor, lea Apache 2.4 + PHP-FPM and Authorization headers on stackoverflow.com. Para ver cómo se obtiene el token, consulte el código del plugin en el repositorio de GitHub.

Token no válido

El token de seguridad del script de la base de datos es incorrecto. Revise la línea 16 del script de Login y asegúrese de que el token coincida con el de WordPress.

Credenciales no válidas

La dirección de correo electrónico y/o la contraseña que estás usando son incorrectas. Asegúrate de introducir la dirección de correo electrónico correcta y de que la contraseña también sea correcta. Puedes restablecer la contraseña del usuario por otra para asegurarte de que tienes la correcta.

No se puede cambiar el correo electrónico o los datos de usuario son incorrectos

Si usa más de una conexión de base de datos personalizada en su inquilino de Auth0 y no puede cambiar la dirección de correo electrónico, o bien se están almacenando datos de usuario para el usuario incorrecto, es probable que tenga ID de usuario superpuestos en Auth0. Este problema se corrigió para los sitios nuevos que instalen la versión 3.11.0, pero en el caso de las conexiones creadas antes de entonces, deberá corregirse manualmente de una de las siguientes maneras:
  • Si no tiene datos de usuario almacenados que deban conservarse (si solo usa la conexión para admitir el inicio de sesión y no almacena metadatos), puede crear una nueva conexión de base de datos personalizada siguiendo los pasos anteriores (usando las notas de la versión 3.11.0) y cambiar la aplicación a esta nueva conexión (asegúrese de desactivar la conexión anterior). La migración se reiniciará y no habrá ningún impacto en la experiencia del usuario.
  • Si sí tiene datos en Auth0 que deben conservarse, puede usar nuestra extensión User Import/Export para ajustar los datos de usuario.
    1. Cree una nueva conexión de base de datos personalizada siguiendo los pasos anteriores (usando las notas de la versión 3.11.0).
    2. Exporte todos los usuarios de la conexión existente (recomendamos poner su sitio en modo de mantenimiento mientras realiza el cambio, para no omitir ningún usuario).
    3. Cambie todos los ID de usuario para agregar el espacio de nombres usado al crear la nueva conexión. Los ID de usuario deben pasar de algo como auth0|123 a auth0|Your-WP-Site-Name|123. Ajuste todos los demás campos necesarios para cumplir con el esquema de importación. Para obtener más información, consulte Bulk User Import Database Schema and Examples.
    4. Active la nueva conexión y desactive la conexión anterior para su aplicación.
    5. Importe los nuevos datos de usuario en la nueva conexión y pruébela.
  • Si tiene una cuenta de pago, puede ponerse en contacto con nuestro equipo de soporte para ejecutar un script de actualización de la base de datos que cambie los ID de usuario a una versión con espacio de nombres y agregue el espacio de nombres a su script de base de datos al mismo tiempo (paso 12 en Set Up and Configuration más arriba).