J’ai rencontré le même problème en testant l’intégration SAML et j’ai finalement réussi à la faire fonctionner. Avec les journaux activés, vérifiez le contenu de @attributes, ce sont les clés réelles dont vous avez besoin pour le mappage et non le nom convivial. Ils correspondent à l’attribut Name des données XML. Dans mon cas, le mappage dans app.yml est devenu :
Il est également important de reconstruire après les modifications apportées à la configuration. Après cela, il a correctement mappé la valeur de l’e-mail de ma réponse SAML.
Probablement pas le bon endroit mais juste pour ajouter, vous aurez besoin de email, name, first_name, last_name et uid comme attributs Discourse pour pouvoir utiliser le 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
cette partie du code (sachant que je ne suis pas un programmeur Ruby) suggère que vous devez mapper tous les attributs à vos attributs pour que le système fonctionne… J’essaierai de tester cette information (j’ai un problème au moment avec le plugin SAML et j’essaie d’enquêter sur les problèmes).