Настройка сайта для отключения локальной регистрации

Здравствуйте,

Я ищу настройку сайта, которая отключает локальную регистрацию, но сохраняет возможность создания новых аккаунтов через OpenID Connect.

Проанализировав отчеты пользователей за январь, я заметил, что большинство из них указывало на текст сайта: «Это сообщение об ошибке: В настоящее время регистрация новых аккаунтов не разрешена». Это заставило бы меня включить параметр Allow_new_registrations.

Изучив все доступные настройки, я не нашел явной опции, разрешающей регистрацию только через OIDC, но запрещающей локальную регистрацию на сайте.

Однако я использовал запрос Data Explorer, чтобы проверить наличие пользователей, которые (конечно, нарушая Условия использования) использовали DevTools, чтобы отобразить кнопку регистрации или выборочно отключили JS-перенаправление:

SELECT
  u.id,
  u.username,
  u.name,
  ue.email,
  u.active,
  u.approved,
  u.created_at,
  u.last_seen_at
FROM users u
LEFT JOIN user_associated_accounts uaa
  ON uaa.user_id = u.id
LEFT JOIN user_emails ue
  ON ue.user_id = u.id
 AND ue.primary = true
WHERE uaa.user_id IS NULL
  AND u.staged = false
ORDER BY u.last_seen_at DESC NULLS LAST, u.created_at DESC

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

Можно было бы ограничить must_approve_users через must_approve_local_users,

однако это исключило бы возможность отключения начальной страницы, перенаправляющей на /login как побочный эффект устранения этой уязвимости безопасности.

Снимите галочку с пункта «Включить локальные логины». Это всё ещё позволит регистрацию/вход через внешние методы, например, через провайдера OpenID.

Основная проблема в том, что при снятии этой галочки мой форум сразу перенаправляет на Entra, из-за чего создается впечатление, что форумом управляет какое-то учреждение (хотя это не так).

Требуется ли вход на вашем сайте? Если да, посмотрите эту настройку:

Да, это включено. Это настройка, для которой я отправил pull request — чтобы убрать слово «внешний» из описания настройки.

Итак, если вы хотите отображать загрузочный экран на сайте, но при этом включить OIDC как единственный метод входа, вам необходимо:

  • снять галочку с параметра enable local logins (включить локальные входы);
  • снять галочку с параметра auth immediately (автоматическая авторизация);
  • включить один внешний метод входа.

После выполнения этих условий пользователи увидят экран с требованием входа, как показано ниже:

Обе кнопки здесь («Зарегистрироваться» / «Войти») будут вести к вашему единственному внешнему методу входа.

Да, я сделал именно это для https://physicswithethan.discourse.diy

Я также отключил свой пользовательский компонент «Переопределение регистрации».

1 лайк

Всё готово, или у вас отсутствует кнопка «Регистрация»? Теперь вы можете разрешить новые регистрации — это включит только регистрацию через OIDC.

Мешает ли отключение auth immediately пользователям создавать новую учётную запись через поток входа OIDC?

Нет, это только контролирует, показывается ли заставка или пользователи сразу перенаправляются на шлюз авторизации.

Хорошо, я изменил оба параметра login_required.welcome_message и site_description, и теперь приветственный экран выглядит гораздо более персонализированным.

Я также отключил Auto_skip_create_confirm, чтобы мое сообщение login_required.welcome_message точно отражало выбор имени пользователя.

2 лайка

Можно ли отключить кнопку «Регистрация» на экране приветствия без использования CSS? (включить «Локальный вход» вместо выключения)

Таким образом, пользователи должны регистрироваться через ссылку-приглашение для локального доступа. Однако я беспокоюсь, что включение настройки «Только по приглашениям» может нарушить работу после OIDC-create_confirm.

ask.discourse.com сообщает мне

Это сочетание могло бы стать решением проблемы, описанной в моём предыдущем сообщении, если оно сработает.

Я полагаю, что эта информация была найдена по ссылке Invite Only and Auth skip create confirm settings show signup popup when using together

Однако я отмечаю, что отчёт об ошибке касается OAuth2, а не плагина OpenID Connect.