Я пытаюсь интегрировать наш Shibboleth с экземпляром Discourse. На данный момент вход в систему работает, но я получаю неверные данные (имя, электронная почта и т. д.).
Я столкнулся с той же проблемой при тестировании интеграции SAML и наконец смог её решить. С включёнными логами проверьте содержимое @attributes — это именно те ключи, которые нужны для сопоставления, а не дружественные имена. Они соответствуют атрибуту Name из XML-данных. В моём случае сопоставление в файле app.yml выглядело так:
Вероятно, это не самое подходящее место, но просто добавлю: для использования плагина SAML вам понадобятся атрибуты, аналогичные атрибутам Discourse: email, name, first_name, last_name и uid.
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
эта часть кода (учитывая, что я не программист на Ruby) предполагает, что вам нужно сопоставить все атрибуты с теми атрибутами, с которыми система может работать… Я попробую проверить эту информацию (в данный момент у меня возникла проблема с плагином SAML, и я пытаюсь её исследовать).