Utiliza el complemento OAuth para Auth0 de manera más fluida

Actualmente estoy intentando integrar la autenticación de Auth0 en mi aplicación Discourse. Básicamente, seguí el flujo de trabajo aquí y logré que funcionara.

Sin embargo, no estoy del todo satisfecho por varias razones:

  1. Después de hacer clic en iniciar sesión/registrarme, solo hay un botón “con Auth0”. Quiero que el panel de inicio de sesión/registro de Auth0 sea lo único que aparezca después de hacer clic en iniciar sesión/registrarme en la parte superior de la página de Discourse.
  2. Después de la autenticación con Auth0, las personas no deberían tener que crear un nuevo usuario, sino que todo debería estar bien gracias a Auth0.
  3. La autenticación por correo electrónico debería ser o debería haber sido manejada a través de Auth0, no a través de Discourse.
  4. Si ya has iniciado sesión a través de Auth0 en ese navegador, posiblemente con la misma aplicación de Auth0, en otro módulo de nuestra plataforma, deberías iniciar sesión automáticamente.
  5. Todavía debería existir la posibilidad de iniciar sesión como usuario administrador, ya que esto podría resultar más desafiante después de implementar el punto n.º 1.

¿Podrías ayudarme a configurar todo o al menos partes de ello?

Creo que puedes verificar esta configuración en Discourse auth_overrides_email para esto.

Y puedes usar esta configuración de vista para esto: auth_skip_create_confirm

Al registrarse a través de autenticación externa, omite la ventana emergente de creación de cuenta. Se usa mejor junto con auth_overrides_email, auth_overrides_username y auth_overrides_name.

También existe la configuración auth_immediately que podría hacer lo que buscas:

Redirige automáticamente al sistema de inicio de sesión externo sin interacción del usuario. Esto solo tiene efecto cuando login_required es verdadero y solo hay un método de autenticación externo.

Puedes visitar /u/admin-login para omitir oauth.

3 Me gusta

Muchas gracias por tu aporte, @blake :slight_smile:

¿Tienes también alguna aportación para los puntos 1 y 4 o son estos más difíciles?

Creo que estas configuraciones auth_immediatley y auth_skip_create_confirm abordarán los puntos 1 y 4. ¿Puedes habilitarlas y ver si mejora las cosas?

@blake Muchas gracias por tu aporte.

Hice todo lo descrito en la página de configuración más tus sugerencias. Sin embargo, cuando intento iniciar sesión, aparece esto:

Mientras que en https://community.auth0.com/ esto es lo que se muestra al intentar iniciar sesión (y también está previsto para mi sitio):

Además, intenté iniciar sesión con mi correo electrónico de prueba y todavía requiere autenticación por correo electrónico a pesar de que el correo electrónico está autenticado en Auth0.

¿Sabes cómo cambiarlo en consecuencia?

Intenta deshabilitar la configuración de enable local logins. Esto debería eliminar la capacidad de iniciar sesión, dejando a tus usuarios solo la opción de iniciar sesión con OAuth2.

Recomendaría hacer esto en una sesión de navegador separada. De esa manera, puedes revertir cualquier cambio que hagas si tienes problemas de configuración sin perder la capacidad de iniciar sesión.

Hola @blake

Gracias por tus aportaciones. He progresado un poco, pero desafortunadamente todavía hay un pequeño problema con el inicio de sesión. Cada vez que presiono el botón de inicio de sesión, la información correcta del usuario se obtiene de Auth0, pero Discourse todavía intenta crear una cuenta.

Me lleva a una pantalla de Bienvenido, creemos tu cuenta con un error que dice El correo electrónico principal ya está en uso.

Esta es mi configuración actual para todas las anulaciones:

Por favor, ayúdame, gracias.

¡Hola Robert!

Puedes solucionar esto habilitando la siguiente configuración: oauth2 permitir cambio de asociación

Hola @leonardo, lamentablemente el problema persiste después de habilitar esa configuración.

De alguna manera está funcionando bien ahora. Agregué la regla oauth2 email verified y ahora está funcionando. Interesante.

Me encanta este plugin. Me doy cuenta de que cuando cierro sesión, cierra mi sesión en Discourse. Pero cuando hago clic en iniciar sesión… inmediatamente me vuelve a iniciar sesión (sin pasar por Auth0). Permití la URI de cierre de sesión en mi aplicación Auth0, pero parece que este plugin nunca llama a https://AUTH0_DOMAIN/v2/logout. ¿Quién mantiene esto? ¿Se puede añadir?