Интеграция в кастомную систему аутентификации, где email-адреса не уникальны?

Список методов установки доступен здесь: Set up a local Discourse Development Environment?. У меня есть окружение для разработки без Docker (по руководству для Ubuntu). Если у вас есть такая возможность, я считаю, что вы получите наилучшие результаты, используя подход без Docker. Одна из причин, по которой я его использую, — избежать проблем с сетью при запросах API между Discourse и другими приложениями, которые я разрабатываю локально. Это также быстрее, чем Docker.

Должно учитываться. Убедитесь, что приложение, в котором вы генерируете полезную нагрузку SSO, не преобразует булево значение true в 1. Это распространённая проблема. Чтобы обойти её, вы можете установить любые булевы значения в полезной нагрузке SSO в виде строк "true" или "false". Discourse интерпретирует их корректно. Проверьте это в первую очередь, чтобы убедиться, что проблема именно в этом. Возможно, дело в чём-то другом. Код, обрабатывающий avatar_force_update, довольно сложный, но читаемый: discourse/app/models/discourse_connect.rb at 187204705323b650d61ed25862eb1a0c733aa63c · discourse/discourse · GitHub.

Редактирование: Что касается проблемы с булевыми значениями в полезной нагрузке SSO, то, пожалуй, точнее будет сказать, что в процессе генерации полезной нагрузки SSO окружение преобразует булевы значения true/false в строки. Discourse ожидает строки "true" или "false", тогда как другие среды программирования могут обрабатывать их иначе. Например:

PHP:

wp> strval(true)
=> string(1) "1"

в отличие от Ruby:

irb(main):001> true.to_s
=> "true"

Python (не уверен, как Discourse обрабатывает этот случай):

>>> str(True)
'True'