Mi sono imbattuto nello stesso problema durante il test dell’integrazione SAML e alla fine sono riuscito a farlo funzionare. Con i log abilitati, controlla il contenuto di @attributes, quelle sono le chiavi effettive di cui hai bisogno per il mapping e non il nome visualizzato. Corrispondono all’attributo Name dai dati XML. Nel mio caso, il mapping all’interno di app.yml è diventato:
È anche importante ricompilare dopo le modifiche alla configurazione. Dopo averlo fatto, ha mappato correttamente il valore dell’email dalla mia risposta SAML.
Probabilmente non è il posto giusto, ma solo per aggiungere, avrai bisogno di email, name, first_name, last_name e uid come attributi di Discourse per poter utilizzare il plugin SAML.
def attribute_statements
result = {}
statements =
"name:fullName,name|email:email,mail|first_name:first_name,firstname,firstName|last_name:last_name,lastname,lastName|nickname:screenName"
custom_statements = setting(:attribute_statements)
statements = "#{statements}|#{custom_statements}" if custom_statements.present?
statements
.split("|")
.map do |statement|
attrs = statement.split(":", 2)
next if attrs.count != 2
(result[attrs[0]] ||= []) << attrs[1].split(",")
result[attrs[0]].flatten!
end
result
end
questa parte del codice (tieni presente che non sono un programmatore Ruby) suggerisce che è necessario mappare tutti gli attributi ai tuoi attributi affinché il sistema possa funzionare… Proverò a testare queste informazioni (ho un problema al momento con il plugin SAML e sto cercando di indagare sui problemi).