Errore di login

Ciao a tutti! Uno dei miei utenti del forum non è riuscito ad accedere al forum dal nostro sito web e ha ricevuto questo errore. Non ci sono problemi con altri account utente, ma solo con il suo. Ho pensato che forse poteva essere risolto aggiornando il forum alla versione più recente, ma il problema è ancora lì.
Avete qualche idea? Apprezzo qualsiasi aiuto.

2 Mi Piace

C’è qualcosa di speciale nella configurazione del tuo accesso, o in questo utente in particolare? Penso di aver già visto errori simili riguardanti account amministratore in precedenza, ma più informazioni puoi fornire, meglio è. :+1:

Stai riscontrando errori nei tuoi /logs?

2 Mi Piace

Grazie per la tua risposta!
Intendi i log in /var/discourse/shared/standalone/log/rails?

In quale log viene registrato un errore del genere?
production.log o production_errors.log

il secondo è vuoto.

1 Mi Piace

Mi riferivo ai log su [YourSite]/logs, o eventualmente se compare qualcosa nella console del browser quando tentano di accedere? Potrebbero esserci dettagli aggiuntivi che potrebbero aiutare a circoscrivere il problema.

Si tratta di un utente non staff e avete qualche SSO abilitato?

1 Mi Piace

Sì, immagino che tutti gli utenti possano accedere con sso, perché non hanno bisogno di inserire nuovamente account e password per accedere al forum. Vengono trasferiti direttamente dal sito web al forum.

Questo è un errore nella console:

E questo è un possibile log di errore nel web:
ActiveRecord::RecordInvalid (la convalida è fallita: Primary email already adopted) app/models/discourse_connect.rb:270:in block in match_email_or_create_user' lib/distributed_mutex.rb:53:in block in synchronize’ lib/distributed

2 Mi Piace

Penso che questo particolare utente abbia un’email diversa su Discourse rispetto al tuo sito principale. Potresti verificarlo per confermare?

1 Mi Piace

Sì, ho appena controllato l’email mostrata nel pannello utente di Discourse e l’email sul nostro sito principale, sono le stesse.

2 Mi Piace

Ho dato un’occhiata e una possibile ragione potrebbe essere che la loro email sia finita accidentalmente nella tua lista bloccata. Puoi cercare e vedere se è così nella tua pagina /admin/logs/screened_emails. Se la trovi lì, sbloccarla potrebbe risolvere il problema. :+1: (vale anche la pena controllare il loro IP in /admin/logs/screened_ip_addresses)

Se non è questo il caso, un’altra possibilità è che avessero un account sul forum prima di abilitare l’SSO. Quale SSO stai usando?

1 Mi Piace

Ho controllato /admin/logs/screened_ip_addresses ed è vuoto.

Mi dispiace, non capisco cosa intendi. (“Quale SSO stai usando”) Esistono molti tipi di SSO?

1 Mi Piace

Mi stavo chiedendo se aveste usato Discourse Connect o qualcos’altro, e a cosa l’aveste collegato per fornire l’autenticazione utente (WordPress, ad esempio).

Abbiamo già visto questo errore, ho appena effettuato una ricerca nel nostro sistema di ticketing.

Questo accade quando hai:

  • require activation impostato su true
  • un utente U1 su Discourse con un indirizzo email specifico, possibilmente con ID esterno A.
  • un utente U2 sul lato provider DiscourseConnect con lo stesso indirizzo email e un ID esterno diverso (B)

L’utente accede, Discourse verifica se esiste un utente con ID esterno B, non esiste.
Normalmente Discourse eseguirà una corrispondenza sull’email come passo successivo, ma poiché require activation è impostato, l’indirizzo email non è attendibile e salta questo passaggio e non si assocerà all’utente U1 perché consentirebbe il dirottamento dell’account.
Quindi Discourse decide di creare un nuovo utente. Questo fallisce perché l’utente U1 esiste già con quell’indirizzo email.

Sarebbe utile se ci fosse un errore migliore nel caso in cui l’email esista ma non sia attendibile. Non sono nemmeno sicuro del perché venga visualizzato un errore Rails generico.

Risoluzioni:

  • se i tuoi indirizzi email sul lato provider DiscourseConnect sono verificati e attendibili, imposta require activation su false.
    o
  • cambia l’ID esterno per l’utente U1 in B
    o
  • cambia l’indirizzo email per l’utente U1 in qualcos’altro

Aggiungendo il testo “la modifica desiderata è stata rifiutata” in modo che questo argomento venga trovato quando qualcuno cerca questo errore.

7 Mi Piace

Sì, stiamo utilizzando Discourse connect e questo è collegato al nostro sito.

Grazie mille per la tua risposta dettagliata! Gli indirizzi email sul nostro sito vengono verificati al momento del login dell’utente. Quindi, proverò prima a risolvere il problema con il metodo 1. Tuttavia, nelle impostazioni di amministrazione non ho trovato dove si trova “richiedi attivazione email”.

È un parametro restituito durante il processo SSO, vedi Disable email verification for SSO - #4 by simon

Per i siti che utilizzano il plugin WP Discourse per l’autenticazione, gli amministratori del sito possono anche contrassegnare gli indirizzi email per gli utenti individuali come verificati dalla pagina delle preferenze dell’utente:

Questo è più sicuro e più facile che disabilitare la verifica dell’email per tutti gli utenti del sito.

Mi chiedo quando abbia iniziato a succedere. Sono abbastanza sicuro che lo scenario che stai delineando generasse questo messaggio di errore: “C’è un problema con il tuo account. Ti preghiamo di contattare l’amministratore del sito.”

Qui è un altro caso di un validatore Rails che fallisce e restituisce questo errore, ed è vecchio di 6,5 anni. Nel contesto di DiscourseConnect, questo è effettivamente qualcosa che abbiamo visto solo negli ultimi mesi.

1 Mi Piace

Stiamo utilizzando l’immagine di discourse, quindi dovremmo semplicemente aggiungere require_activation=true in env:?

Grazie per il tuo aiuto, ma non utilizziamo WP. Stiamo utilizzando l’immagine Docker di Discourse. Il modo corretto per configurarlo è aggiungere require_activation=true in env: del file app.yml?

No, vedi Login error - #17 by RGJ come postato in precedenza, devi passare questo parametro su base per utente. Ciò richiede la modifica del codice lato server se si tratta di un’implementazione personalizzata.

1 Mi Piace