SSO con TownNews CMS

Qualcuno ha configurato l’SSO per un sito Townnews?

Non sono a conoscenza di alcun sito che utilizzi Townnews o BLOX CMS con SSO di Discourse. Sai se è possibile aggiungere del codice a un sito che utilizza tale servizio? Se è possibile aggiungere il codice SSO di Discourse al sito, potrebbe essere possibile utilizzarlo come provider SSO per Discourse.

Scusa, sono un principiante, ma intendevo usare TownNews come fonte SSO. Quale codice dovrei aggiungere al sito?

Questo significa che Townnews agirebbe come provider SSO per il tuo sito Discourse. Per utilizzare l’implementazione di SSO di Discourse, devi essere in grado di aggiungere codice al servizio che funge da provider SSO. Tale codice deve integrarsi nel processo di accesso del servizio. Puoi trovare i dettagli sul codice da aggiungere qui: Single-Sign-On ufficiale per Discourse (sso).

Per un esempio di codice funzionante, consulta come il nostro plugin per WordPress implementa l’SSO: wp-discourse/lib/sso-provider at main · discourse/wp-discourse · GitHub.

Potrebbe anche essere possibile effettuare l’accesso degli utenti a Discourse tramite Townnews utilizzando OAuth2. Ciò sarebbe possibile se Townnews può funzionare come provider OAuth2. Ci sono dettagli sulla configurazione degli accessi OAuth2 con Discourse qui: Supporto base OAuth2. Prima di dedicare troppo tempo a questa opzione, sarebbe opportuno confermare se Townnews può funzionare come provider OAuth2. Dovrebbe essere possibile scoprirlo dalla loro documentazione.

Sto cercando di gestire la questione con il mio provider del sito, ma ho pensato di condividerla con te per vedere se contiene informazioni utili per aiutarmi. Apprezzo molto il tempo che ci stai dedicando.


Reindirizzamento all’endpoint del provider

Ogni sito BLOX-CMS dispone di un endpoint di autenticazione federata disponibile allo stesso URL riservato:

https://www.example.com/tncms/auth/federated/

Il sito consumer avvia l’autenticazione reindirizzando il browser dell’utente a questo URL. L’endpoint richiede un parametro return che deve essere impostato sull’URL dell’endpoint del sito consumer.

Un esempio di URL:

https://www.example.com/tncms/auth/federated/?return=http://vendor.com/login/

L’endpoint accetta anche parametri aggiuntivi:

  • source: Questo parametro e il suo valore verranno passati all’URL di login del sito se è richiesta l’autenticazione dell’utente. I template possono reagire a questo valore per personalizzare l’interfaccia del modulo di login. Se non specificato, il valore predefinito è ‘federated’.

  • reauth: Impostare a un valore vero per forzare la visualizzazione della pagina di login indipendentemente dallo stato di accesso corrente dell’utente.

Reindirizzamento all’endpoint consumer

L’URL dell’endpoint del sito consumer viene fornito al provider nel parametro return quando l’utente viene inizialmente reindirizzato all’endpoint del provider. Dopo un’autenticazione riuscita sul sito del provider, l’utente verrà reindirizzato a questo URL insieme a un parametro code. Il valore di code dovrà essere scambiato per ottenere i dettagli dell’account dell’utente in una chiamata di servizio web immediata, come descritto di seguito.

L’URL dell’endpoint del consumer può contenere propri parametri di query. Il parametro code verrà unito a essi senza sovrascrivere gli altri valori.

A seconda di come sono scritti i template del sito del provider, è possibile che l’utente arrivi all’endpoint consumer senza un valore per code. In tal caso, l’utente deve essere trattato come se avesse scelto di annullare il processo di autenticazione.

Una risposta di esempio in caso di login riuscito (basata sull’esempio precedente):

http://vendor.com/login/?code={code}

Dove {code} è un identificativo univoco da utilizzare nel servizio web successivo.

Chiamata di servizio web successiva

Quando l’utente atterra sull’endpoint del consumer con un codice valido, il sito consumer deve effettuare immediatamente una chiamata di servizio web al sito del provider per scambiare il codice con le informazioni dell’account dell’utente.

Il sito consumer accederà all’azione get del modulo user, passando il parametro code ricevuto dal provider:

https://www.example.com/tncms/webservice/v1/user/get/?code={code}

La risposta sarà un oggetto dati dell’account dell’utente, come descritto nella documentazione dei servizi web. In caso di codice non valido, verrà restituita una risposta nulla.

Un codice è utilizzabile una sola volta. Dopo essere stato utilizzato per recuperare un account utente, viene immediatamente invalidato e le future richieste con lo stesso codice restituiranno risposte nulle.

Questo sembra promettente: https://help.bloxcms.com/knowledge-base/applications/settings/users/authentication_provider/article_fa0ce6ec-9824-11e4-b296-23bd78ef308a.html:

L’opzione Authentication Provider consente al tuo sito di fungere da fornitore di autenticazione OpenID. Ciò significa che gli utenti del tuo sito possono utilizzare le proprie credenziali per accedere ad altri siti che lo consentono. Altri siti BLOX CMS potrebbero agire come siti client, permettendo questo scambio di credenziali di accesso.

Dovrebbe essere possibile configurare un sito BLOX CMS per funzionare come fornitore di autenticazione OpenID per Discourse. In tal caso, gli utenti potrebbero accedere al tuo forum Discourse tramite il tuo sito TownNews. Per configurarlo, dovrai installare il plugin Discourse OpenID Connect (OIDC) sul tuo sito Discourse. La configurazione potrebbe richiedere qualche prova ed errore. Facci sapere se ti blocchi e proveremo ad aiutarti.