据我所知,最糟糕的情况需要满足以下条件:
- 电子邮件地址未在外部网站上进行验证
- SSO 负载中未设置
require_activation=true - Discourse 站点上已存在没有关联
SingleSignOnRecord的帐户(帐户所有者从未通过 SSO 登录过 Discourse)
在这种情况下,有人可以在外部网站上使用从未通过 SSO 登录过的 Discourse 用户的电子邮件地址注册。这将允许来自外部网站的未经验证的帐户接管使用相同电子邮件地址的 Discourse 帐户。如果这是 Discourse 上的管理员帐户,那将尤其令人担忧。
如果外部网站未处理电子邮件验证,确实建议 Discourse 处理电子邮件验证:
不过,在外部网站上处理电子邮件验证有几个原因更好:
- 强制用户接收来自 Discourse 的确认电子邮件会在用户首次尝试登录 Discourse 时增加一些摩擦。(但实际上,这种摩擦必须发生在某个地方——要么在 Discourse 端,要么在外部网站端。)
- 如果 SSO 负载中的
require_activation设置为true,Discourse 将不会根据电子邮件地址将现有的 Discourse 帐户与外部登录匹配。如果您在 DiscourseConnect 启用后,某些帐户已通过用户名/密码注册创建,那么这将是一个问题。如果您出于任何原因需要删除 Discourse 上的SingleSignOnRecord条目,那也将是一个问题。当用户尝试重新登录 Discourse 时,Discourse 不会自动创建新的SingleSignOnRecord条目。