Пользователи OIDC не связываются с существующими пользователями Discourse

Привет! Я пытаюсь настроить Discourse с плагином Discourse OpenID Connect и Keycloak.

Мне удалось заставить это работать: я смог не только войти в свой экземпляр Discourse, используя учётные данные Keycloak, но и связать уже существующую учётную запись Discourse с учётной записью OIDC. К сожалению, при настройке контейнера Keycloak я допустил ошибку, в результате чего потерял его конфигурацию и базу данных.

После этого я переустановил Keycloak (на этот раз правильно!) и перенастроил Discourse на использование нового Client ID. Кажется, интеграция работает (включение логов в /logs показывает, что аутентификация прошла успешно), но связать учётные записи Discourse с учётными записями OIDC больше не получается.

Когда я пытаюсь войти в Discourse, использую OIDC, вижу интерфейс создания новой учётной записи, затем нажимаю ссылку для привязки к уже существующей учётной записи; я вхожу, меня перенаправляют в Discourse, но если я выйду из системы и войду снова, я снова вижу тот же интерфейс создания новой учётной записи.

Я использовал плагин Data Explorer, чтобы проверить связи, и моя учётная запись отображается как NULL; при этом идентификатор провайдера совпадает с идентификатором пользователя в Keycloak.

У меня включена опция «OpenID Connect allow association change» (Разрешить изменение привязки OpenID Connect).

Мне кажется, что Discourse всё ещё держит данные от моей предыдущей установки Keycloak, и простого изменения нового Client ID недостаточно.

Есть ли что-то ещё, на что мне стоит обратить внимание, что я мог упустить?

Спасибо!

Используете ли вы один и тот же адрес электронной почты для разных учётных записей? Можете ли вы воспроизвести эту проблему с новой учётной записью, которая ранее не была связана с Keycloak?

Спасибо за быстрый ответ!

Я не использовал один и тот же адрес электронной почты для этих аккаунтов, но изменил его в Keycloak, чтобы он совпадал с тем, что используется в Discourse, однако проблема сохраняется. Ответ в Data Explorer остаётся прежним — пользователь «NULL».

Я попробовал создать нового, чистого пользователя, но получаю ошибку «Неверное имя пользователя, адрес электронной почты или пароль», хотя имя пользователя корректно и свободно, адрес электронной почты действителен, а пароль сгенерирован моим менеджером паролей. Скорее всего, это не связано с предыдущей проблемой, но мне всё равно нужно разобраться, почему это происходит.

Привет,

У меня здесь та же проблема. У меня есть Nextcloud в качестве OIDC-провайдера. Но это, вероятно, не имеет значения для данной проблемы.

Я могу войти через вход в Nextcloud. Затем, как описано выше, мне предлагается выбрать: зарегистрировать новую учётную запись или войти с существующей. Связь с существующей учётной записью через адрес электронной почты не устанавливается.

Если я выбираю «Зарегистрироваться», мне сразу же снова показывается главная страница в состоянии выхода из системы, и мне приходится/я могу снова войти. Никакого сообщения об ошибке не отображается.

Это уже странно.

Всё работает отлично, если я вхожу с OIDC-учётной записью, для которой нет соответствующей учётной записи Discourse. Тогда она сразу создаётся, и в настройках пользователя отображается также связанная учётная запись.

Возможно, у кого-то ещё есть идея, что я делаю не так, или окажется, что здесь есть ошибка.

С уважением,

Майк

Всем привет,

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

Адрес электронной почты, который передаётся, по умолчанию не помечается как «проверенный». Чтобы это исправить, я в админ-панели в разделе «Провайдеры OpenID Connect» → «Настройки» установил значение параметра «Указание верификации адреса электронной почты в токене» на «Всегда проверять».