Я сейчас пытаюсь внедрить аутентификацию Auth0 в моё приложение Discourse. В целом я следовал инструкциям, описанным здесь, и смог запустить процесс.
Однако меня не полностью устраивает текущее решение по нескольким причинам:
После нажатия на кнопку «Войти/Регистрация» отображается только кнопка «Через Auth0». Я хочу, чтобы после нажатия на «Войти/Регистрация» в верхней части страницы Discourse сразу появлялась панель входа/регистрации Auth0, и ничего больше.
После аутентификации через Auth0 пользователям не следует создавать новую учётную запись — всё должно работать автоматически благодаря Auth0.
Аутентификация по электронной почте должна осуществляться (или уже осуществлялась) через Auth0, а не через Discourse.
Если пользователь уже вошёл в систему через Auth0 в этом браузере, возможно, с тем же приложением Auth0 в другом модуле нашей платформы, он должен автоматически войти в систему.
Должна оставаться возможность входа как администратор, так как после реализации пункта №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.
Я думаю, что эти настройки auth_immediatley и auth_skip_create_confirm решат пункты 1 и 4. Можете ли вы включить их и посмотреть, улучшится ли ситуация?
Кроме того, я попытался войти с помощью моей тестовой электронной почты, но система всё равно требует подтверждения по электронной почте, хотя в Auth0 она уже подтверждена.
Попробуйте отключить настройку «Включить локальные логины». Это должно убрать возможность входа, оставив пользователям только вариант входа через OAuth2.
Однако рекомендую сделать это в отдельной сессии браузера. Так вы сможете откатить любые внесённые изменения, если возникнут проблемы с конфигурацией, не потеряв возможность входа.
Привет, @blake.
Спасибо за ценные советы. Я добился некоторого прогресса, но, к сожалению, по-прежнему существует небольшая проблема с входом. Каждый раз, когда я нажимаю кнопку входа, правильные данные пользователя успешно получаются из Auth0, но Discourse всё ещё пытается создать учётную запись.
Я попадаю на экран «Добро пожаловать, давайте создадим вашу учётную запись» с ошибкой: Основной адрес электронной почты уже занят.
Вот моя текущая конфигурация для всех переопределений:
Обожаю этот плагин. Я заметил, что при выходе меня действительно выводит из Discourse. Однако при нажатии кнопки «Войти» система сразу же снова входит в аккаунт (без перехода на Auth0). Я добавил URI выхода в приложении Auth0, но похоже, что https://AUTH0_DOMAIN/v2/logout никогда не вызывается этим плагином. Кто поддерживает этот плагин? Можно ли добавить эту функцию?