¿Activar la autenticación automática mediante SSO al enlazar a temas privados?

Estamos utilizando nuestra propia aplicación como proveedor de SSO para Discourse y tenemos un problema al vincular usuarios a temas privados en nuestro foro de Discourse desde nuestra aplicación: la autenticación solo se activa al hacer clic en el botón «Iniciar sesión».

  • Utilizamos nuestro propio sistema como proveedor de SSO para Discourse.
  • Tenemos una mezcla de páginas públicas y privadas en Discourse, por lo que no tenemos establecido login_required.
  • Si un usuario se autentica en nuestro sistema y lo vinculamos a la URL raíz de Discourse, se le muestran las categorías públicas pero no inicia sesión.
  • Si un usuario se autentica en nuestro sistema y lo vinculamos a Discourse + /login, inicia sesión correctamente y es redirigido a la URL raíz de Discourse.
  • Si un usuario se autentica en nuestro sistema y lo vinculamos a la URL de una categoría o tema privado en Discourse, se le muestra una página que le solicita iniciar sesión. Si hace clic en «Iniciar sesión», se inicia sesión automáticamente y se le muestra la categoría/tema.

Este último caso es el problemático. Creo que una de las siguientes opciones sería adecuada:

  • Podemos vincular a nuestro-discourse.com/c/alguna-categoria?login=true y se realizará una verificación de autenticación: si el usuario ha iniciado sesión, se le mostrará el tema; si no, se le enviará a nuestro proveedor de SSO y se le redirigirá de nuevo al tema tras iniciar sesión.
  • Podemos vincular a nuestro-discourse.com/login?redirect=c/alguna-categoria y se realizará una verificación de autenticación: si es exitosa, se redirigirá a la página indicada en la cadena de consulta; si no, se redirigirá al proveedor de SSO y, tras una autenticación exitosa, se redirigirá a la página indicada en la cadena de consulta.
  • Podemos vincular a nuestro-discourse.com/c/alguna-categoria, y si es una página privada, Discourse realizará una verificación de autenticación: si es exitosa, se accederá a la categoría; si no, se redirigirá al proveedor de SSO y luego se volverá a redirigir.

¡Gracias!

(He publicado este problema anteriormente aquí; disculpen las múltiples publicaciones, pero pensé que quizás un nuevo tema obtendría más respuestas).

You can create an login link on your SSO provider site with a return_path parameter in the URL. After authentication, Discourse will redirect the user to the value set for the return_path. The link should be in this form:

<a href="https://forum.example.com/session/sso?return_path=https://forum.example.com/your-discourse-endpoint">Link Text</a>
5 Me gusta

Can’t they also have the SSO do something similar so that when they log in to the SSO they are also logged in to Discourse?

The only ways I know of auto logging in users to Discourse when the login to the SSO provider site seem a little hacky. With the use of SSO login links in the form I gave above and the sync_sso route for updating users without requiring them to login, I can’t see where it would be required.

1 me gusta

Thank you - this has worked perfectly.

I’m not sure if we are doing this - what would be the way to check?

EDIT: should have searched first… details here: Sync DiscourseConnect user data with the sync_sso route

3 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.