Hacen clic en Obtener ayuda en el foro de la comunidad y se les redirige a Auth0 para iniciar sesión
Después de iniciar sesión, se les redirige a discourse.getdbt.com pero se muestra la advertencia CSRF.
Si hacen clic en Iniciar sesión y luego en Usar su cuenta de la comunidad dbt, la cuenta se crea con éxito y ven el diálogo de creación de cuenta donde pueden configurar su nombre de usuario, etc.
Vídeo de Loom que muestra esto en acción:
He habilitado oauth2 debug auth y en los registros puedo ver (oauth2_basic) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
Mis preguntas:
¿Es un problema de Discourse o de Auth0? Supongo que de Discourse, ya que un flujo de inicio de sesión casi idéntico para Slack funciona sin problemas.
¿Por qué funciona esto en la página de inicio de sesión pero no cuando el inicio de sesión se activa desde el lado de Auth0?
El mensaje de error CSRF predeterminado implica que ocurre cuando el navegador cambia o cuando el flujo de inicio de sesión tarda demasiado. Ninguno de esos es el caso, ¿qué más podría estar causándolo?
Gracias @david. Ahora mismo no tengo nada en el campo URI de inicio de sesión de la aplicación, pero sí tengo algo en las URLs de redirección permitidas:
¿Debería poner https://discourse.getdbt.com/auth/oauth2_basic en el campo URI de inicio de sesión de la aplicación y dejar https://discourse.getdbt.com/auth/oauth2_basic/callback en el campo URLs de redirección permitidas?
¿Puedes compartir más detalles sobre cómo se implementa el enlace “Obtener ayuda en el Foro de la Comunidad”? ¿A dónde va el enlace? Actualmente supongo que el botón es manejado por Auth0 y que agregar esa nueva configuración de URL hará que el botón enlace correctamente a /auth/oauth2_basic para iniciar el flujo de inicio de sesión.
Disculpa la tardanza en responder. ¡Acabo de regresar después de las vacaciones de Navidad!
Hice esto:
pero sigo obteniendo el mismo resultado.
Ese enlace apunta a https://dev-zb38hsho.us.auth0.com/samlp/5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr, donde dev-zb38hsho es nuestro ID de instancia de Auth0 y 5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr es el ID del cliente para la aplicación Discourse en Auth0.
Visitar ese enlace redirige a https://dev-zb38hsho.us.auth0.com/u/login?state=SESSION_SPECIFIC_TOKEN.
La clave es que Discourse necesita iniciar el flujo de autenticación en /auth/oauth2_basic, luego redirigir a Auth0, y después volver a /auth/oauth2_basic/callback.
Esperaba que pudiéramos conseguir que Auth0 iniciara el inicio de sesión comenzando con la primera URL, pero parece que está saltando Discourse directamente a la URL de devolución de llamada.
¿Podrías actualizar el botón para que apunte a /auth/oauth2_basic en el foro? Eso iniciará el flujo de autenticación y redirigirá inmediatamente a Auth0, por lo que la experiencia de usuario general debería ser la misma.
¡Sí, eso funciona! Hace una pausa en una página intermedia con un botón Continuar; ¿la interacción del usuario es obligatoria para activar de forma segura un flujo de OAuth o algo así?
Esa página se muestra cuando hay varios métodos de inicio de sesión en un sitio. Si deshabilita los ‘inicios de sesión locales’ (nombre de usuario/contraseña), debería pasar directamente al proceso de inicio de sesión.