如果主机名已更改,则无法使用已注册的 U2F

注意:从安全角度来看,这是一种理想的行为,但如果用户遇到这种情况,我们可以优化用户体验

如果用户已注册 U2F 令牌,但自注册以来站点的主机名已更改,则该令牌将无法使用。

然而,由于我们在 Discourse 中未存储主机名信息,用户不会收到任何提示,告知这可能是由于主机名变更所致。如果用户不了解为何会出现这种情况,他们可能会感到困惑。

针对此情况的一个优化方案是在该界面上:

  • 禁用“使用安全密钥进行身份验证”选项
  • 显示类似“我们已为此账户登记了安全密钥,但该密钥不适用于您正在请求的主机名(www.example.com)”的提示信息

注意事项:

  • 如果实施上述方案,我们必须确保不会在 UserSecurityKey 表中将旧主机名重新映射到新主机名
6 个赞

是的,我们需要在这里添加一些内容,@sam,以涵盖域名变更的情况。我认为这主要是文案更新,比如在底部加个免责声明之类的?

1 个赞

这_可能_有点棘手,因为我认为主机名是存储在安全密钥表中的公钥内部的(我很久没处理过这个了,所以可能记错了)。这需要一些调整才能在 UI 中触发此问题,从而禁用按钮并显示提示信息。此外,只有当_所有_已注册的安全密钥的主机名都不匹配时才会显示此提示——只要有一个匹配,用户就没问题。

与此相关的是,我还必须修复 https://meta.discourse.org/t/2fa-security-key-breaks-when-migrating-to-custom-domain/155528/6。我会将这个话题也分配给我自己,因为我认为在更改主机名时,我们应该直接禁用所有现有的安全密钥,因为它们实际上已经失效了。

1 个赞

我经常将生产环境的数据库恢复到具有不同主机名的测试站点。如果能自动禁用所有无效密钥,并要求管理员重置它们,那就太好了(尽管负责任的用户会设置备用密钥,所以这其实帮助不大。:sadpanda:)。

1 个赞