Sono riuscito a farlo funzionare e sono stato in grado non solo di accedere alla mia istanza Discourse utilizzando le mie credenziali Keycloak, ma anche di associare un account Discourse già esistente a quello di OIDC. Sfortunatamente, ho commesso un errore durante la configurazione del container Keycloak e ho finito per perdere la sua configurazione e il suo database.
Da allora ho reinstallato Keycloak (questa volta correttamente!) e riconfigurato Discourse per utilizzare il nuovo Client ID, ma mentre sembra che l’integrazione funzioni (abilitando i log in /logs si vede che l’autenticazione è effettivamente avvenuta), non riesco più ad associare gli account Discourse agli account OIDC.
Quando provo ad accedere a Discourse, uso OIDC, vengo accolto dalla nuova interfaccia utente dell’account e poi clicco sul link per associare un account già esistente; accedo, vengo reindirizzato a Discourse, e se mi disconnetto e accedo di nuovo, vedo la stessa nuova interfaccia utente dell’account.
Ho utilizzato il plugin Data Explorer per esaminare le associazioni, e il mio utente risulta NULL; l’ID del provider corrisponde all’User ID in Keycloak, tuttavia.
Ho attivato l’opzione “OpenID Connect allow association change”.
Immagino che Discourse stia ancora aggrappandosi a ciò che c’era dalla mia precedente installazione di Keycloak, e cambiare solo il nuovo Client ID non sia sufficiente.
C’è qualcos’altro che dovrei controllare e che potrei aver trascurato?
Stai usando lo stesso indirizzo email tra gli account? Riesci a riprodurre questo problema con un account nuovo che non era associato a Keycloak in precedenza?
Non stavo usando lo stesso indirizzo email tra gli account, ma l’ho cambiato su Keycloak per farlo corrispondere a quello utilizzato in Discourse, ed è ancora lo stesso. La risposta in Data Explorer è la stessa (“NULL” user).
Ho provato a creare un nuovo utente, e sto ricevendo un errore “Invalid username, email or password”, anche se il nome utente è perfettamente valido e disponibile, l’email è valida e la password è stata generata dal mio password manager. Questo è molto probabilmente non correlato, ma è un’altra cosa che devo capire perché sta succedendo.
ho lo stesso problema anche qui. Ho una Nextcloud come provider OIDC, ma probabilmente non è rilevante per il problema.
Posso accedere con il login di Nextcloud. Viene poi mostrata, come descritto sopra, la possibilità di registrare un nuovo account o accedere con uno esistente. Non viene stabilita alcuna associazione con l’account esistente tramite l’indirizzo email.
Se scelgo “Registra”, viene immediatamente mostrata di nuovo la pagina iniziale nello stato di disconnessione e devo/richiedo di accedere nuovamente. Non viene visualizzato alcun messaggio di errore.
È davvero strano.
Funziona tutto correttamente se accedo con un account OIDC per il quale non esiste un corrispondente account Discourse. In quel caso ne viene creato uno nuovo e viene mostrato anche l’account associato nelle impostazioni dell’utente.
Forse qualcuno ha ancora un’idea su cosa stia sbagliando, o si scopre invece che c’è un bug qui.
sono riuscito a capire perché l’associazione non funzionava. Se qualcuno deve risolvere lo stesso problema, ecco la mia soluzione.
L’indirizzo email inviato non viene contrassegnato come “verificato” per impostazione predefinita. Per ottenere questo risultato, ho impostato il valore di “Impostazione di verifica dell’indirizzo email nel token” su “Imposta sempre come verificato” nella sezione OpenID Connect Providers → Impostazioni dell’area di amministrazione.