Encontrei o mesmo problema ao testar a integração SAML e finalmente consegui fazê-la funcionar. Com os logs ativados, verifique o conteúdo de @attributes, essas são as chaves reais que você precisa para o mapeamento e não o nome amigável. Elas correspondem ao atributo Name dos dados XML. No meu caso, o mapeamento dentro de app.yml ficou:
Também é importante reconstruir após as alterações na configuração. Depois de fazer isso, ele mapeou corretamente o valor do e-mail da minha resposta SAML.
Provavelmente não é o lugar certo, mas só para adicionar, você precisará de email, name, first_name, last_name e uid como atributos do Discourse para poder usar o 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
esta parte do código (tenha em mente que não sou um programador Ruby) sugere que você precisa mapear todos os atributos para os seus atributos que o sistema pode funcionar… Tentarei testar essa informação (tenho um problema no momento com o plugin SAML e estou tentando investigar os problemas).