Saltar al contenido

Configuración de Auth0 en WordPress

Vamos a traducir de la forma más cercana posible la integración del plugin: Auth0 para WordPress para mejorar la seguridad de nuestro sitio. Nos hemos basado en la documentación de la página oficial del plugin Auth0. El plugin, reemplazará nuestra página de inicio de sesión predeterminada por otra página de inicio de sesión que ofrecerá un inicio de sesión único con una capa de autentificación (> Mulit-factor Authentication : autenticación de “brute force protection” y detector de contraseña robada y muchas más funciones disponibles, y configurables, a través de la opciones de extensabilidad con “*rules and *hooks“.

*rule: control de acceso basado en reglas.

*Hook: Hook es un termino genérico en WordPress que se usa como referencia, en lugares estratégicos dentro del core, para inyectar código propio y agregar comportamientos o cambiar el funcionamiento por defecto de tu WordPress.

Activación del plugin:

Tan pronto como actives el: Login by Auth0,  te redirigirá al asistente de configuración del plugin.

Auth0 no reemplazará tus formularios de inicio de sesión hasta que se haya agregado un Dominio , ID de cliente y Secreto de cliente (Domain, Client ID, Client Secret) a la pestaña Básica de la página de configuración.

Configuración de inicio de sesión con Auth0:

El inicio de sesión mediante Auth0 se puede configurar utilizando el Asistente de configuración en el complemento, o manualmente, para obtener más control sobre el proceso. Las instrucciones también se pueden usar si el Asistente de configuración no se completó, o como, parte de la resolución de problemas de inicio de sesión. Aquí vamos a centrarnos en la configuración manual.

Deberás iniciar sesión en tu cuenta Auth0 antes de seguir los pasos a continuación. 

Configuración Auth0

Tu usuario Auth0 debe estar configurado para aceptar solicitudes de inicio de sesión de tu sitio en WordPress, y las identidades de los usuarios de origen de al menos una conexión, ya sea una base de datos Auth0, una conexión social, o un directorio de negocios (database, a social connection, or a business directory).

Configuración del plugin:

  1. Primero, necesitas una aplicación para tu sitio de WordPress:
  • Si estás solucionando problemas con el Asistente de configuración , navega a la pantalla de aplicaciones y busca una aplicación que sea similar al nombre de tu WordPress. Si no encuentras uno, significa que el asistente no creó una aplicación. Reinicia el asistente de configuración en WordPress o sigue el paso que se encuentra a continuación para crear una aplicación manualmente.

  • Si estás configurando manualmente , ve a la pantalla de aplicaciones y haz clic en Crear aplicación . Ingresa un nombre para la aplicación, selecciona Aplicaciones web normales y haga clic en Crear .

lista de aplicaciones Auth0

2. Haz clic en la pestaña Configuración para la Aplicación. Verás tu dominio, ID de cliente y secreto de cliente (Domain, Client ID, Client Secret), que se utilizan en wp-admin> Auth0> Configuración para conectarte a Auth0.

Configuración app

3. El Tipo de aplicación debe establecerse en Aplicación web normal y el Método de autenticación de punto final de token debe establecerse en Publicar.

4. Desplázate hacia abajo hasta las URLs de devolución de llamada permitidasAllowed Callback URLs) y proporciona la URL del sitio de WordPress ?auth0=1adjunta:

https://your-wordpress-domain.com/index.php?auth0=1

La URL de devolución de llamada (The Callback URL), no debe almacenarse en caché, o es posible que veas un error de “Estado no válido” durante el inicio de sesión. 

  1. Ingresa la dirección de WordPress (URL) de tu sitio en WordPress (donde el sitio de WordPress aparece públicamente) y, si es diferente, a la dirección del sitio (URL) (desde donde se sirve wp-admin) en el campo (Allowed Web Origins). Ambos valores se encuentran en la pantalla de configuración general de tu sitio de WordPress.

  2. Ingrese la URL de inicio de sesión de tu sitio de WordPress en el campo (Allowed Logout URLs) URLs de cierre de sesión permitido.

  3. Deja en blanco el campo  (Allowed Origins) (CORS) Orígenes permitidos (CORS) (utilizarás los valores de (Allowed Callback URLs)  URLs de devolución de llamada permitidas de  los valores anteriores)

Asegúrate de que coincida con el protocolo de tu sitio (http o https) y usa la URL de inicio como base, que se encuentra en “wp-admin > Settings > General > WordPress Address (URL)  wp-admin> Configuración> General> Dirección de WordPress (URL) para todos los campos de URL anteriores.

  1. Desplázate hacia abajo y haz clic en el enlace Mostrar configuración avanzada , luego en la pestaña OAuth y asegúrate de que JsonWebToken Signature Algorithm esté configurado en RS256. Si esto debe cambiarse más tarde, debe cambiarse aquí, así como en wp-admin (mira en “Settings > Basic below”).

  2. “Turn on OIDC Conformant” OIDC Conformant tienes que posicionarlo en “ON”

Turn on OIDC Conformant

10. Haz clic en la pestaña (Grant Types) Tipos de concesión y selecciona como mínimo  (Authorization Code) Código de autorización y (Client Credentials) Credenciales de cliente.

client grant types

11. Haz clic en Guardar cambios . 

Autoriza al plugin para la API de administración:

Para que tu sitio de WordPress realice ciertas acciones en nombre de tu usuario de Auth0, deberás autorizar la aplicación creada anteriormente para acceder a la API de administración. Esto no es obligatorio, pero permitirá recuperar datos completos del usuario al iniciar sesión (incluyendo user_metadataapp_metadata), cambios de correo electrónico y contraseña para los usuarios, y reenvío de verificación de correo electrónico cuando se requieran correos electrónicos verificados.

  1. Asegúrate de que tu aplicación permita la concesión de credenciales de cliente (paso 10 en la sección anterior).

  2. Navega a la página de APIs .

  3. Haz clic en Auth0 Management API , luego en la pestaña (Machine to Machine to Applications) Aplicaciones de máquina a máquina.

  4. Busque la aplicación de WordPress y haz clic en (Unauthorized) No autorizado para otorgar acceso.

  5. En el panel que aparece, selecciona sólo Los (SCOPES): read:usersy los update:users y haga clic en Actualización (se puede realizar búsquedas con el campo (Filter scopes).

grant-app-access-to-api

Configuración de conexión de base de datos:

  • Las conexiones de base de datos permiten el inicio de sesión con nombre de usuario y contraseña con registros de usuario almacenados en Auth0. Este tipo de conexión no es obligatoria y se puede omitir si solo utiliza para inicios de sesión del tipo: sin contraseña , sociales o login del tipo empresarial.
  1. Si utilizaste el asistente durante la configuración, ve a la página de: Conexiones> Base de datos y busca una conexión que tenga un nombre similar al de la configuración de la aplicación anterior. De lo contrario, puedes crear una nueva conexión, usar una conexión existente o usar el nombre:  (Default Username-Password-Authentication) usuario-contraseña-autenticación predeterminado . Haz clic en un nombre de conexión existente para ver la configuración o haz clic en: (Create DB Connection) Crear conexión DB y sigue los pasos.

listado database connection

2. Haz clic en la pestaña Aplicaciones y activa la Aplicación creada anteriormente.

db-connection-apps

Configuración de conexión social:

Consulta Conexiones sociales para obtener información detallada sobre cómo activar y configurar este método de inicio de sesión.

Configuración de conexión empresarial:

Consulta Conexiones empresariales para obtener información detallada sobre cómo activar y configurar este método de inicio de sesión.

Configuración de WordPress:

  1. Vuelve a la página de Aplicaciones  y selecciona la Aplicación creada anteriormente.

  2. En una nueva pestaña / ventana, inicia sesión en wp-admin para tu sitio de WordPress y ve a wp-admin> Auth0> Configuración .

  3. Copia (DomainClient ID, and Client Secret) Dominio , Id de cliente y cliente secreto desde tu página de aplicación Auth0 a tu configuración de WordPress usando: the Copy to Clipboard buttons los botones Copiar al portapapeles al lado de cada campo.

  4. Scroll down” Desplázate hacia abajo y haz clic en Guardar cambios .

Almacenamiento de configuración constante de PHP:

La configuración del complemento se puede guardar en la base de datos (predeterminada) o se puede establecer utilizando una constante PHP específicamente nombrada. Esto permitirá que los datos confidenciales como el cliente secreto, el token de API y el token de migración se almacenen de manera más segura (suponiendo que el archivo en el que están definidos esté almacenado de forma segura).

La constante debe definirse antes de que se cargue el complemento o no se usará. Esto debería suceder en su wp-config.phparchivo o en un plugin de uso obligatorio . Si la constante se define en el tema functions.phpo en un plugin que se carga después de Auth0, el valor se ignorará.

Las constantes PHP se definen así:

// Storing the client secret in a constant.

// Add to wp-config.php or anywhere before WP_Auth0_Options_Generic is instantiated.

// Constant name is “AUTH0_ENV_” + option key in caps.

define( ‘AUTH0_ENV_CLIENT_SECRET’, ‘YOUR_CLIENT_SECRET_HERE’ );

  1. The default constant name: debe ir  AUTH0_ENV_ seguida del nombre de la opción para anular todo en mayúsculas (el prefijo se puede modificar con el auth0_settings_constant_prefix filter,  explained here.
  2. Nota: El valor migration_token se genera cuando la migración de usuarios está activada. Si ya hay un valor en el administrador, asegúrate de establecer la constante en el mismo valor. Si ese valor necesita cambiar, también debe cambiarse en los scripts personalizados para la conexión de la base de datos que se usas en el panel de Auth0.
  3. El campo de configuración: cambiará su visualización en función de este nuevo valor y mostrará la constante que se utiliza como referencia. Este valor se usará automáticamente en todas las partes del plugin.
  4. Importante: Guardar la página de configuración después de establecer un valor constante validará los valores establecidos constantemente (pero no los cambiará) y los eliminará de la matriz de opciones que se guarda en la base de datos. Si solo está probando esta funcionalidad, no guarde la configuración en la página de administración de WordPress hasta que esté listo para eliminar ese valor.
  5. Todos los sitios: en una red multisitio de WordPress utilizarán el mismo valor constante, lo que hace que esta sea una manera fácil de configurar una red usando una sola aplicación y conexión de base de datos.

Configuración del plugin:

Básico.

  1. Domain: el dominio copiado de la configuración de la aplicación en su panel de control. El nombre de la opción es domain.
  2. Custom Domain: el dominio personalizado para su inquilino, si hay uno configurado. Consulte Dominios personalizados para obtener más información. El nombre de la opción es custom_domain.
  3. Client ID: la ID de cliente copiada de la configuración de la aplicación en su panel de control. El nombre de la opción es client_id.
  4. Client Secret: el cliente secreto copiado de la configuración de la aplicación en su tablero. El nombre de la opción es client_secret.
  5. JWT Signature Algorithm: El algoritmo utilizado para firmar tokens desde la Configuración avanzada de aplicaciones, pestaña OAuth; el valor predeterminado es RS256. El nombre de la opción es client_signing_algorithm.
  6. Tiempo de caché JWKS (en minutos): durante cuánto tiempo se debe almacenar la información JWKS cuando se utiliza el algoritmo de firma JWT RS256. El nombre de la opción es cache_expiration.
  7. Original Login Form on wp-login.php: proporciona formas de acceder o bloquear la página principal de inicio de sesión de WordPress. El nombre de la opción es wordpress_login_enabled. El nombre de la opción del código de la página de inicio de sesión es wle_code.
  8. Never: no permitirá que se muestre el formulario de inicio de sesión principal de WordPress.
  9. A través de un enlace debajo del formulario Auth0 se mostrará un enlace al formulario de inicio de sesión principal de WordPress directamente debajo del Auth0 incrustado wp-login.php. También se puede acceder directamente ?wlea la página de inicio de sesión agregando a la URL de inicio de sesión.
  10. Cuando el parámetro de consulta “wle” está presente , permitirá acceder directamente ?wlea la página de inicio de sesión agregando la URL de inicio de sesión. Esto evitará la redirección de la página de inicio de sesión universal.
  11. Cuando el parámetro de consulta “wle” contiene un código específico, se podrá acceder directamente a la página de inicio de sesión agregando ?wle=más un código a la URL de inicio de sesión. El código se genera automáticamente y se mostrará debajo de los controles para esta configuración. Esto evitará la redirección de the Universal Login Page .
  12. Allow Signups: Permitir registros: el registro de usuarios estará disponible solo si la opción WordPress Anyone puede registrarse está habilitada. Puedes encontrar esta configuración en Settings > General > Membership.

Caracteristicas:

  • Universal Login Page: Página de inicio universal: redirige la wp-login.phppágina a la página de inicio de sesión universal para la autenticación de inicio de sesión único (SSO) utilizando todas las conexiones activas para esta aplicación. El nombre de la opción es auto_login.

  • Auto Login Method: inicio de sesión automático: una conexión única y activa para usar para la autenticación cuando se activa la página de inicio de sesión universal . Déjelo en blanco para mostrar todas las conexiones activas en la página de inicio de sesión universal. El nombre de la opción es auto_login_method.

  • Auth0 Logout: Auto Cierre de sesión de Auth0: habilite esta opción para cerrar sesión en Auth0 al cerrar sesión en WordPress. El nombre de la opción es singlelogout.

  • Anular avatares de WordPress: obliga a WordPress a usar avatares Auth0. El nombre de la opción es override_wp_avatars.

Embedded/incrustado:

Las opciones aquí no afectan la página de inicio de sesión universal (consulta esta página para ver las opciones de personalización).

  • Passwordless Login: Inicio de sesión sin contraseña: habilite esta opción para activar el inicio de sesión sin contraseña en todos los formularios de inicio de sesión Auth0 integrados. Las conexiones sin contraseña se administran en el panel de Auth0 y al menos una debe estar activa y habilitada en esta aplicación para que esto funcione. El nombre de la opción es passwordless_enabled.

  • Icon URL: URL del icono: establece el icono sobre el formulario de inicio de sesión Auth0 incrustado. El nombre de la opción es icon_url.

  • Form title: Título del formulario: establece el título del formulario de inicio de sesión Auth0 incrustado. El nombre de la opción es form_title.

  • Habilita la integración de Gravatar: cuando el usuario ingresa su correo electrónico, su imagen de Gravatar asociada se muestra en el formulario de inicio de sesión Auth0 incorporado. El nombre de la opción es gravatar.

  • Login Name Style: Estilo de nombre de inicio de sesión: al seleccionar Correo electrónico , los usuarios deberán ingresar su dirección de correo electrónico para iniciar sesión. Establezca esto en nombre de usuario si no desea forzar un nombre de usuario para que sea una dirección de correo electrónico válida. El nombre de la opción es username_style. El nombre de la opción es client_secret_b64_encoded.

  • Color primario: la información sobre esta configuración está aquí . El nombre de la opción es primary_color.

  • Configuración adicional: un objeto JSON válido que incluye opciones para llamar a Bloquear. Esto anula todas las demás opciones establecidas anteriormente. Para obtener una lista de las opciones disponibles, consulta Lock: User configurable options  Bloqueo: opciones configurables por el usuario (en inglés) (por ejemplo:) {"disableResetAction": true }. El nombre de la opción es extra_conf.

  • Use Custom Lock JS URL: Usa URL JS de bloqueo personalizado: cuando está desactivado, WordPress utilizará la última versión probada de Lock (formulario de inicio de sesión integrado Auth0) automáticamente. Cuando está activado, los administradores pueden proporcionar una URL de bloqueo personalizada para usar. El nombre de la opción es custom_cdn_url.

  • URL personalizada de Lock JS: una URL válida que apunta a una versión de Lock. Este campo se ocultará automáticamente cuando Usar URL de bloqueo personalizado JS esté desactivado. El nombre de la opción es cdn_url.

  • Conexiones a mostrar: enumera aquí cada uno de los proveedores de identidad con los que deseas permitir que los usuarios inicien sesión. Si se deja en blanco, se permitirán todos los proveedores habilitados. (Consulta las conexiones {Array} (En inglés) para obtener más información).El nombre de la opción es lock_connections.

Si ha habilitado el inicio de sesión sin contraseña, debe enumerar aquí todos los proveedores de identidad social permitidos. (Consulte .social (opciones, devolución de llamada) para obtener más información).

Avanzado:

  1. Requerir correo electrónico verificado: si está configurado, requiere que el usuario tenga un correo electrónico verificado para iniciar sesión. Esto puede evitar que algunas Conexiones funcionen correctamente si no proporcionan una dirección de correo electrónico o una email_verifiedmarca en los datos del perfil del usuario. El nombre de la opción es requires_verified_email.

  2. Omitir estrategias: si la opción Requerir correo electrónico verificado está activada, se mostrará esta configuración. Este campo acepta nombres de estrategia para omitir el requisito de correo electrónico verificado al iniciar sesión y asociar la cuenta. Esto solo debe usarse para estrategias que no proporcionan una email_verifiedbandera.

  3. Recordar sesión de usuario: de forma predeterminada, las sesiones de usuario duran dos días. Habilite esta configuración para mantener las sesiones de usuario en activo durante 14 días. El nombre de la opción es remember_users_session.

  4. URL de redireccionamiento de inicio de sesión: si está configurado, redirige a los usuarios a la URL especificada después de iniciar sesión. Esto no afecta el inicio de sesión a través del [auth0]shortcode. El nombre de la opción es default_login_redirection. Para cambiar la redirección para el shortcode, agregue un redirect_toatributo, así:

    [auth0 redirect_to="http://yourdomain.com/redirect-here"]

  5. Forzar devolución de llamada HTTPS: active esta opción si su sitio permite HTTPS pero la impone. Esto forzará las devoluciones de llamada de Auth0 a HTTPS en el caso de que su URL de inicio no esté configurada en HTTPS. El nombre de la opción es force_https_callback.

  6. Aprovisionamiento automático: ¿Deberían almacenarse los nuevos usuarios de Auth0 en la base de datos de WordPress si no se permiten nuevos registros? Esto creará usuarios de WordPress que no existen cuando inician sesión a través de Auth0 (por ejemplo, si se crea un usuario en el panel de Auth0). El nombre de la opción es auto_provisioning.

Si se permiten registros en WordPress, se crearán nuevos usuarios independientemente de esta configuración.

  • Migración de usuarios: al habilitar esta opción, se expondrán los servicios web de migración Auth0. Sin embargo, la conexión deberá configurarse manualmente en el panel de Auth0 . Para obtener más información sobre el proceso de migración, consulta la página de documentación sobre migraciones de usuarios . El botón Generar nuevo token de migración se puede usar para reemplazar el token guardado por uno nuevo. Asegúrate de tener la página de configuración de Conexión de tu base de datos abierta en la pestaña Base de datos personalizada para que puedas reemplazar el token existente con el nuevo en ambos scripts. El nombre de la opción es migration_ws. El nombre de la opción de token de migración es migration_token.

  • Lista blanca de IP de migración: solo las solicitudes de IP enumeradas tendrán acceso al servicio web de migración. El nombre de la opción es migration_ips_filter.

  • IP de proxy válida: enumera la dirección IP de tu proxy o equilibrador de carga para habilitar las comprobaciones de IP para inicios de sesión y servicios web de migración. El nombre de la opción es valid_proxy_ip.

  • Dominio del servidor Auth0: El dominio Auth0, es utilizado por el asistente de configuración para obtener la información de tu cuenta. El nombre de la opción es auth0_server_domain.