@JammyDodger,我最近在一个免费实例上注册了账户:
在那里,我似乎也遇到了 t/227972 中描述的问题:
大多数文档都指出这应该默认启用:
然而,我甚至没有启用它的选项,而且它默认也未启用:
@JammyDodger,我最近在一个免费实例上注册了账户:
在那里,我似乎也遇到了 t/227972 中描述的问题:
大多数文档都指出这应该默认启用:
然而,我甚至没有启用它的选项,而且它默认也未启用:
已将您的帖子移至此处,因为这与您在 Contribute > Bug 中最初发布的议题不同。
Discourse ID 并未使用 OAuth2。它实际上充当的是 SSO 提供商,这与 OAuth2 不同。
要配置双因素认证(2FA),您需要在 SSO 提供商 ID 处进行设置。具体网址为:https://id.discourse.com/my/preferences/security。
@jomaxro,谢谢。也许让我困惑的是,我尝试将 enforce_second_factor 设置为“all”,但未能成功,因为我被告知“如果本地登录已禁用,则无法强制实施双因素认证。”如果这不太离题,有什么解决方案吗?
这是个很好的问题……而我目前没有答案。我已经联系团队,看看谁能解答!
因此,团队已纠正了我。Discourse ID 确实底层使用了 OAuth2——在此致歉。我原以为它使用的是其他协议。
关于您的问题,我们不支持外部登录方式的二次验证(2FA)。正如您看到的消息所述,若未启用本地登录,则无法强制实施 2FA。我们依赖外部登录提供商(本例中为 Discourse ID,但适用于所有外部提供商)来管理 2FA,包括强制实施。
@jomaxro,这是否意味着在使用免费试用计划时,我无法修改该偏好设置?或者,我能否以某种方式断开 Discourse ID 的连接?
想确认一下,您指的是免费试用,还是免费计划?
@jomaxro,抱歉。是免费版计划,我认为是:
我们的问题是:身份提供商(IdP)是否会将用户是否执行了多因素认证(MFA)的信息传递给服务提供商(SP)?
我想到的是类似于 U2F / FIDO 的机制——程序可以要求设备提供关于凭证所需/预期的用户交互级别的证明。
如果 Discourse ID……或任何其他身份提供商(SAML?OAuth2?OIDC?)将此类信息传递给服务提供商,那么这将是我们可能利用的一条信息。
如果不能,我们恐怕只能在联合登录后实施多因素认证,才能获得这一保障。
实现这一点的标准方式是通过 OIDC。Discourse ID 目前仅基于 OAuth2 构建。若要支持 MFA 标志,我们需要在提供商层实现 OIDC,并在需要该功能的客户端之间传递 MFA 值。
这存在若干复杂情况: