站点设置:禁用本地注册

您好,

我正在寻找一个站点设置,该设置可以禁用本地注册,但保留通过 OpenID Connect 进行的新账户注册。

回顾一月份的用户报告,大多数报告指向一条站点文本:“错误消息:目前不允许新账户注册。”这可能会促使我启用 Allow_new_registrations 选项。

在浏览所有可用设置时,我没有看到任何明确允许通过 OIDC 注册但不允许通过“本地”站点注册的选项。

不过,我使用数据探索器查询检查了是否有任何用户(当然,这是违反服务条款的行为)利用开发者工具隐藏了注册按钮,或选择性禁用了 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,这会让我的论坛看起来像是由某个机构管理的(但实际上并非如此)。

您的网站是否启用了 login required?如果是,请查看此设置:

是的,已启用。这就是我提交拉取请求的修改项——从设置描述中移除“外部”一词。

因此,如果您希望在网站上显示启动画面,同时将 OIDC 设置为唯一的登录方式,您需要执行以下操作:

  • 取消勾选“启用本地登录”
  • 取消勾选“立即进行身份验证”
  • 启用一种外部登录方式

满足这些条件后,用户将看到如下所示的“需要登录”界面:

这里的两个按钮(注册/登录)都将引导用户进入您配置的唯一外部登录方式。

是的,我正是这样操作了 https://physicswithethan.discourse.diy

我还禁用了我的自定义组件“注册覆盖”。

1 个赞

一切就绪了吗?还是您找不到注册按钮?现在可以“允许新用户注册”了,但这仅会通过 OIDC 启用注册。

禁用“立即认证”是否会阻止用户通过 OIDC 登录流程创建新账户?

不,它仅控制是否显示启动画面,或者用户是否会被直接发送到登录网关。

好的,我调整了 login_required.welcome_messagesite_description,这让启动页面的个性化程度大大提升。

我还禁用了 Auto_skip_create_confirm,这样我的 login_required.welcome_message 就能准确反映用户名选择的提示了。

2 个赞