Usando el plugin OAuth2 Basic Support (incluido en el núcleo de Discourse desde la versión v2025.11.0), puedes configurar la autenticación con Salesforce.
Para ello, crea una aplicación OAuth2 conectada en Salesforce:
Crear → Apps → Nueva aplicación conectada
Asegúrate de permitir el acceso a “información básica de acceso”
Establece la “URL de devolución de llamada” en https://TUFORO.COM/auth/oauth2_basic/callback: Ten en cuenta que debes ejecutar tu foro Discourse con HTTPS.
Anota el ID de cliente y el secreto
En el lado de Discourse, configura las siguientes opciones (encontradas en Admin → Inicio de sesión → OAuth2.0):
oauth2 enabled: true
oauth2 client id y secret, según la sección anterior
Gracias por esta publicación, que fue inestimable para configurar un proyecto reciente que requería inicio de sesión en Salesforce.
En nuestro caso, la aplicación de Salesforce era una Comunidad, lo que significó que tuvimos que cambiar algunos de los detalles anteriores. Publico en este antiguo hilo por si le sirve a alguien más. Casi me rompió el cerebro durante un día entero.
URL de autorización oauth2: https://[NOMBRE_COMUNIDAD].force.com/services/oauth2/authorize
URL de token oauth2: https://[NOMBRE_COMUNIDAD].force.com/services/oauth2/token
Sin embargo, todavía tuvimos problemas con errores 403 Forbidden, que eran HTML sin estilo y no parecían mucho un error de Discourse, lo que llevó a mucho depurado de Salesforce y a morderse los dientes. Pero el problema estaba en Discourse.
Prohibido
No tienes permiso para acceder a este recurso.
Además, se encontró un error 500 Internal Server Error al intentar usar un ErrorDocument para manejar la solicitud.
Aunque la redirección a la URL de Callback parecía funcionar, la consola del navegador registraba fallos de autenticación. Al final, fue el no definidooauth2 callback user id path lo que causó el fallo de autenticación. Establecerlo en id solucionó todo.
Todas las demás configuraciones como en la publicación anterior.
Gracias por las directrices. Logramos autenticarnos correctamente con Salesforce, pero nos encontramos con un problema. Nuestros objetos/campos de SF no parecen transmitirse correctamente a Discourse. Justo después de un inicio de sesión exitoso en SF en Discourse, parece que Discourse lo trata como un usuario nuevo y solicita nombre de usuario, correo electrónico y nombre, incluso cuando estos deberían provenir de los campos name, email y username del JSON de OAuth2.
¿Podrían ayudarnos a conocer el formato JSON de los objetos/campos de SF que se utilizan en el plugin de OAuth2? Hemos probado con object.field, object_field y simplemente field. Parece que no se genera ningún error, pero nada se transmite desde SF a Discourse a través del JSON para reconocer el inicio de sesión como de un usuario existente de Discourse.
¡Gracias por la información, @sonny.mendoza! Lo he integrado en las instrucciones del inicio de este tema para que pueda ayudar a otras personas en el futuro