Configurar la autenticación de Salesforce usando el plugin de soporte básico OAuth2

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
  • oauth2 authorize url: https://login.salesforce.com/services/oauth2/authorize
  • oauth2 token url: https://login.salesforce.com/services/oauth2/token
  • oauth2 fetch user details: true (este es el valor predeterminado, pero asegúrate de que esté habilitado)
  • oauth2 user json url: https://login.salesforce.com/services/oauth2/userinfo
  • oauth2 json user id path: user_id
  • oauth2 json username path: preferred_username
  • oauth2 json name path: name
  • oauth2 json email path: email
  • oauth2 email verified: true
  • oauth2 authorize options: scope, display, immediate, state

Si tienes problemas, asegúrate de habilitar oauth2 debug auth y revisa tus /logs.

9 Me gusta

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
  • Ruta del ID de usuario de callback oauth2: id

Los cambios de ruta se resolvieron gradualmente (y con dolor) a partir de la documentación de Salesforce y otras fuentes:
https://auth0.com/docs/connections/social/salesforce
Salesforce Help

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 definido oauth2 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.

2 Me gusta

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.

Solo una actualización: encontramos una solución a nuestro problema, estas son las configuraciones de nuestro lado para mapear los campos de SF.

Configuraciones obligatorias:

### oauth2 fetch user details - **marcado**
### oauth2 user json url - **https://<tu_sitio_sfsite.com>/services/oauth2/userinfo**
### oauth2 user json url method - **get**
### oauth2 json user id path - **user_id**
### oauth2 json username path - **preferred_username**
### oauth2 json name path - **name**
### oauth2 json email path - **email**

Esperamos que esto ayude a otros que buscan una solución para la conexión oauth2 de SF.

2 Me gusta

¡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 :slight_smile:

3 Me gusta