Tengo problemas con la autenticación de Google. Tengo un proyecto en Google Cloud y, tras cambiar al nuevo dominio, también actualicé la URL de redirección en el ID de cliente allí, por lo que actualmente está configurada como
Ahora el problema. Al intentar “registrarse con Google”, obtengo este error en Discourse:
https://forum.sugarmail.app/auth/failure?message=csrf_detected La autorización ha expirado o has cambiado de navegador. Por favor, inténtalo de nuevo.
Cuando el foro estaba bajo el dominio antiguo, forum.skymail.app, la autenticación de Google funcionaba sin problemas.
Ejecuté ./launcher rebuild app después de cambiar el dominio, asegurándome de actualizar el dominio en app.yaml bajo DISCOURSE_HOSTNAME (de hecho, el foro no cargaba en absoluto hasta que lo hice).
Normalmente, cuando inicias el flujo de inicio de sesión, se establece la cookie _forum_session en tu navegador. Sin embargo, en tu sitio, eso no parece estar ocurriendo.
¿Tienes algún plugin o proxy que pueda estar interfiriendo con las cookies de tu sitio?
Plugins: no, no estoy usando ninguno. Lo único que hice después de la instalación fue habilitar la autenticación de Google (ID de cliente y secreto) y activar “usar siempre HTTPS”.
Proxies: estoy usando nginx como proxy inverso (que también sirve el sitio principal de la aplicación).
Let’s Encrypt en la configuración de Discourse no está habilitado. Por lo tanto, el nginx dentro del contenedor sirve HTTP sin cifrar, y el nginx externo realiza la terminación SSL.
Esta configuración es casi la misma que tenía con el dominio antiguo; la única diferencia es “forzar HTTPS”.
¡Vaya, maldición! Resulta que es “forzar HTTPS”, lo cual tenía desactivado anteriormente.
Lo activé recientemente para evitar la advertencia de Chrome sobre “contenido de página inseguro”, que aparecía debido a enlaces HTTP sin cifrar a imágenes.
Para reiterar: yo realizo la terminación SSL en el nginx “externo”, y en lo que respecta a Discourse en sí, no hay SSL.
Desactivar “forzar HTTPS” hace que la autenticación de Google vuelva a funcionar (tuve que agregar una URL de redirección HTTP sin cifrar en el proyecto de Google Cloud).
Pero eso no es bueno, porque aparecerán advertencias de “sitio inseguro” o contenido mixto tan pronto como haya imágenes.
¿Existe alguna forma de mantener la autenticación de Google funcionando con “forzar HTTPS” y la terminación SSL fuera de Discourse?
(Preferiría usar el soporte SSL propio de Discourse, pero asume que “posee” el dominio, por lo que tendría que configurar una dirección IP adicional para este VPS y separar el sitio principal del foro… lo cual es un poco laborioso…)
Gracias @riking. He copiado tal cual el bloque de nginx desde tu enlace y luego habilité la opción “forzar HTTPS”, como recomienda la consola de administración de Discourse.
Mi foro ya está de nuevo en línea y funcionando, y la autenticación con Google también funciona.
Sin embargo, persiste un problema:
Tanto Chrome como Firefox me muestran advertencias sobre contenido de página inseguro.
Al revisar el rastreo de red en las herramientas de desarrollador de Chrome, se trata de este enlace (HTTP plano, no HTTPS):