Более плавная интеграция плагина OAuth для Auth0

Я сейчас пытаюсь внедрить аутентификацию Auth0 в моё приложение Discourse. В целом я следовал инструкциям, описанным здесь, и смог запустить процесс.

Однако меня не полностью устраивает текущее решение по нескольким причинам:

  1. После нажатия на кнопку «Войти/Регистрация» отображается только кнопка «Через Auth0». Я хочу, чтобы после нажатия на «Войти/Регистрация» в верхней части страницы Discourse сразу появлялась панель входа/регистрации Auth0, и ничего больше.
  2. После аутентификации через Auth0 пользователям не следует создавать новую учётную запись — всё должно работать автоматически благодаря Auth0.
  3. Аутентификация по электронной почте должна осуществляться (или уже осуществлялась) через Auth0, а не через Discourse.
  4. Если пользователь уже вошёл в систему через Auth0 в этом браузере, возможно, с тем же приложением Auth0 в другом модуле нашей платформы, он должен автоматически войти в систему.
  5. Должна оставаться возможность входа как администратор, так как после реализации пункта №1 это может оказаться более сложной задачей.

Можете ли вы помочь мне настроить всё или хотя бы отдельные части?

Полагаю, вы можете проверить эту настройку в Discourse: auth_overrides_email.

Для этого вы можете использовать следующую настройку сайта: auth_skip_create_confirm.

При регистрации через внешнюю аутентификацию пропустить всплывающее окно создания учётной записи. Лучше всего использовать вместе с auth_overrides_email, auth_overrides_username и auth_overrides_name.

Также существует настройка auth_immediately, которая, возможно, решит вашу задачу:

Автоматически перенаправлять на систему внешнего входа без взаимодействия с пользователем. Это работает только если параметр login_required установлен в true и используется только один метод внешней аутентификации.

Вы можете перейти по адресу /u/admin-login, чтобы обойти OAuth.

Большое спасибо за ваш вклад, @blake :slight_smile:

У вас есть какие-то замечания по пунктам 1 и 4, или они более сложные?

Я думаю, что эти настройки auth_immediatley и auth_skip_create_confirm решат пункты 1 и 4. Можете ли вы включить их и посмотреть, улучшится ли ситуация?

@blake Большое спасибо за ваш вклад.

Я сделал всё, как описано на странице настройки, плюс учёл ваши предложения. Однако при попытке входа появляется следующее:

В то время как на https://community.auth0.com/ при попытке входа отображается вот это (и это должно быть и для моего сайта):

Кроме того, я попытался войти с помощью моей тестовой электронной почты, но система всё равно требует подтверждения по электронной почте, хотя в Auth0 она уже подтверждена.

Не знаете, как это исправить?

Попробуйте отключить настройку «Включить локальные логины». Это должно убрать возможность входа, оставив пользователям только вариант входа через OAuth2.

Однако рекомендую сделать это в отдельной сессии браузера. Так вы сможете откатить любые внесённые изменения, если возникнут проблемы с конфигурацией, не потеряв возможность входа.

Привет, @blake.
Спасибо за ценные советы. Я добился некоторого прогресса, но, к сожалению, по-прежнему существует небольшая проблема с входом. Каждый раз, когда я нажимаю кнопку входа, правильные данные пользователя успешно получаются из Auth0, но Discourse всё ещё пытается создать учётную запись.
Я попадаю на экран «Добро пожаловать, давайте создадим вашу учётную запись» с ошибкой: Основной адрес электронной почты уже занят.

Вот моя текущая конфигурация для всех переопределений:

Буду признателен за помощь, спасибо.

Привет, Роберт!

Ты можешь исправить это, включив следующую настройку: oauth2 allow association change

Привет, @leonardo, к сожалению, проблема сохраняется даже после включения этой настройки.

Как-то это теперь работает нормально. Я добавил правило oauth2 email verified, и теперь всё работает. Интересно.

Обожаю этот плагин. Я заметил, что при выходе меня действительно выводит из Discourse. Однако при нажатии кнопки «Войти» система сразу же снова входит в аккаунт (без перехода на Auth0). Я добавил URI выхода в приложении Auth0, но похоже, что https://AUTH0_DOMAIN/v2/logout никогда не вызывается этим плагином. Кто поддерживает этот плагин? Можно ли добавить эту функцию?