Discourse OpenID Connect (OIDC)

Привет,

плагин отлично работал в течение нескольких лет, но я столкнулся с первым пользователем SSO, чьё имя пользователя заканчивалось на нижнее подчёркивание, например, недопустимое имя пользователя.

Этот пользователь не может войти в Discourse. Похоже, что OIDC пытается создать учётную запись с именем пользователя без нижнего подчёркивания. Это нормально, но если такая учётная запись уже существует (имя пользователя foo существует, а foo_ не может войти из-за ошибки «Учётная запись уже существует»), в какой-то части системы, похоже, происходит попытка имперсонации:

Пользователь с именем foo получает письмо о том, что кто-то пытался создать учётную запись или изменить email учётной записи, но этот email уже занят.

Это происходит при первом входе, то есть при создании учётной записи через SSO для foo_. То есть foo_ пытается создать учётную запись как foo, но не может, потому что имя уже занято. Но почему тогда оригинальный foo получает уведомление по электронной почте об этом?

Вы только что попытались создать учётную запись на \<discourse\> или изменить email учётной записи на \<email пользователя foo\>.

Есть ли решение проблемы наличия username и username_ в OIDC, например, настройка того, как Discourse обрабатывает недопустимые имена пользователей во время аутентификации?