Attivare l'autenticazione automatica tramite SSO quando si collegano argomenti privati?

Stiamo utilizzando la nostra stessa applicazione come provider SSO per Discourse e stiamo riscontrando un problema quando colleghiamo gli utenti a topic privati nel nostro forum Discourse dalla nostra applicazione: l’autenticazione viene attivata solo cliccando sul pulsante ‘Login’.

  • Utilizziamo il nostro sistema come provider SSO per Discourse.
  • Abbiamo una combinazione di pagine pubbliche e private su Discourse, quindi non abbiamo impostato login_required.
  • Se un utente si autentica nel nostro sistema e lo reindirizziamo all’URL radice di Discourse, gli vengono mostrate le categorie pubbliche ma non risulta autenticato.
  • Se un utente si autentica nel nostro sistema e lo reindirizziamo all’URL di Discourse + /login, viene autenticato correttamente e reindirizzato all’URL radice di Discourse.
  • Se un utente si autentica nel nostro sistema e lo reindirizziamo all’URL di una categoria/topic privata su Discourse, gli viene mostrata una pagina che gli chiede di effettuare il login. Se clicca su Login, viene automaticamente autenticato e gli viene mostrato il category/topic.

Questo ultimo caso è quello problematico. Ritengo che una delle seguenti soluzioni sarebbe adeguata:

  • possiamo collegarci a ourdiscourse.com/c/some-category?login=true e viene eseguita un’analisi dell’autenticazione: se l’utente è autenticato, gli viene mostrato il topic. In caso contrario, viene inviato al nostro provider SSO e reindirizzato al topic dopo il login.
  • possiamo collegarci a ourdiscourse.com/login?redirect=c/some-category e viene eseguita un’analisi dell’autenticazione: se riuscita, viene reindirizzato alla pagina presente nella stringa di query; in caso contrario, viene reindirizzato al provider SSO e, dopo un’autenticazione riuscita, viene reindirizzato alla pagina presente nella stringa di query.
  • possiamo collegarci a ourdiscourse.com/c/some-category e, se si tratta di una pagina privata, Discourse esegue un’analisi dell’autenticazione: se riuscita, l’utente viene portato alla categoria; in caso contrario, viene reindirizzato al provider SSO e poi riportato indietro.

Grazie!

(Ho già pubblicato il problema qui - mi scuso per i numerosi post, ma pensavo che un nuovo argomento potesse ottenere più risposte).

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 Mi Piace

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 Mi Piace

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 Mi Piace

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