Avevamo il plugin SAML funzionante con il nostro AzureAD, ma ieri, dopo l’aggiornamento all’ultimo commit, abbiamo iniziato a vedere i seguenti errori quando gli utenti tentano di autenticarsi tramite SAML:
Accesso
Spiacenti, si è verificato un problema durante l'accesso.
AADSTS7500525: Si è verificato un errore XML nel messaggio SAML alla riga 1, posizione 1. Verificare che il contenuto XML dei messaggi SAML sia conforme alle specifiche del protocollo SAML.
I commit di dicembre contengono molte modifiche a SAML (configurazione tramite impostazioni del sito, ad esempio), ma non sono riuscito a capire se ci sono state modifiche relative alle richieste SAML che potrebbero aver causato questo problema.
Configurazione SAML (funzionante fino all’aggiornamento):
## Impostazione del plugin Saml
DISCOURSE_SAML_TARGET_URL: https://login.microsoftonline.com/<<il nostro id app>>/saml2
DISCOURSE_SAML_CERT_FINGERPRINT: "<<la nostra impronta digitale>>"
DISCOURSE_SAML_REQUEST_METHOD: POST
#DISCOURSE_SAML_FULL_SCREEN_LOGIN: true
DISCOURSE_SAML_CERT: "-----BEGIN CERTIFICATE-----
<<Il nostro payload del certificato>>
-----END CERTIFICATE-----"
DISCOURSE_SAML_SYNC_GROUPS: true
DISCOURSE_SAML_GROUPS_ATTRIBUTE: http://schemas.microsoft.com/ws/2008/06/identity/claims/role
DISCOURSE_SAML_GROUPS_FULLSYNC: true
Come posso abilitare il debug dell’autenticazione per ottenere maggiori informazioni a riguardo?
Mi dispiace sentire che stai riscontrando problemi! Hai ragione, ho fatto molte rifattorizzazioni sul plugin SAML nelle ultime settimane, quindi potrebbe essere correlato.
Quando succede? Quando gli utenti avviano l’accesso? O quando vengono reindirizzati a Discourse?
C’è la possibilità che tu possa condividere qui l’URL del tuo sito, o tramite messaggio privato?
Ho anche provato a cercare qualcosa nei log di Discourse, ma poiché l’errore si verifica sul lato Azure, non ho trovato alcun messaggio di errore lì.
Nel file production.log il processo di login si ferma qui (probabilmente in attesa di un ritorno da Azure):
Processing by StaticController#show as HTML
Parameters: {“id”=>“login”}
Rendered static/login.html.erb (Duration: 17.5ms | Allocations: 1440)
Completed 200 OK in 19ms (Views: 18.3ms | ActiveRecord: 0.0ms | Allocations: 2104)
Started GET “/session/csrf” for <> at 2021-12-14 18:28:16 -0300
Processing by SessionController#csrf as JSON
Completed 200 OK in 1ms (Views: 0.1ms | ActiveRecord: 0.0ms | Allocations: 337)
Started POST “/auth/saml” for <> at 2021-12-14 18:28:16 -0300
(saml) Setup endpoint detected, running now.
(saml) Request phase initiated.
Il team responsabile di Azure sta cercando di ottenere l’XML che stanno ricevendo, quindi forse potremo vedere qualcosa di “diverso” in esso. Ti farò sapere quando me lo invieranno.
L’errore si verifica dopo che l’utente fa clic sul pulsante di accesso.
Quindi viene reindirizzato alla pagina di accesso di Azure con il seguente errore:
Temo che sia difficile capire cosa sta succedendo qui senza accedere al sito.
Il passo successivo sarebbe provare a ottenere l’XML che viene ricevuto da Azure e capire cosa c’è che non va. Dovresti essere in grado di farlo controllando il payload negli strumenti per sviluppatori del browser, e quindi decodificandolo usando uno strumento come questo