支持使用Passkeys的无密码登录

:wave: 我是 Thomas Cannon,Ruby passkeys 组织的首席维护者之一!

已经有一些库可以帮助实现这一点,但我们非常需要维护者。以下是一些相关链接:

我们绝对希望尽我们所能提供帮助;并汇集资源,使 passkeys 成为 Ruby 生态系统中的标准 :flexed_biceps:

8 个赞

您好 Thomas,

Discourse 自带了直接基于 WebAuthn 构建的双因素身份验证系统。我认为我们目前唯一较大的不足之处在于,我们不允许(可选地)仅使用双因素身份验证作为唯一因素。

我注意到 Google 也(从昨天开始)全面支持了这项技术,Passkeys: What they are and how to use them

我确实希望为 Discourse 也提供此选项,我非常讨厌密码,而且对我来说,仅使用双因素身份验证 + 挑战感觉比密码本身更安全。

7 个赞

太棒了!我该如何提供最大的帮助?

2 个赞

棘手,这取决于您想深入到什么程度。一个添加站点设置的原型 PR 将是令人欣喜的,但我完全理解这可能是一项相当大的时间投入。

2 个赞

我可以试试!不敢保证,所以如果有人想抢在我之前去吃午饭,请便!

5 个赞

快速更新:Discourse 即将支持通行密钥。我过去几周一直在研究这个问题,并且已经准备了几个草稿 PR。请参阅 #23586#23587#23591

我认为大约 3-4 周后,我们应该可以合并此功能(默认关闭站点设置)。如果再给予几周的测试和错误修复时间,我估计大约两个月后就可以投入生产。敬请关注!

10 个赞

您好!关于 Discourse 中的通行密钥,有什么新消息吗?

2 个赞

看起来此功能的最终 PR 已于一周前合并,并且站点设置的名称目前似乎是 experimental_passkeys(目前是一个隐藏设置)。

1 个赞

我刚刚启用了站点设置,并在我帮助运行的论坛上为我的帐户添加了通行密钥,这似乎完美有效。要在站点上提前启用它,应该可以这样做:

cd /var/discourse
./launcher enter app
rails c
SiteSetting.experimental_passkeys=true

启用后,您只需打开 https://forum.example.com/my/preferences/security 并添加通行密钥,然后注销并使用“使用通行密钥登录”选项重新登录即可。

3 个赞

各位朋友,是的,我们已经合并了几个添加 passkeys 支持的 PR,并且正在内部进行测试。

如果您想成为该功能的早期测试者,上述步骤是正确的。不过,我们仍在微调一些内容,官方更新/公告即将发布。

9 个赞

在正式宣布之前,这里还有另一个更新:元(meta)现已启用通行密钥。请尝试使用它们,并在本主题的回复中报告任何问题。

我们的计划是在实验标志下继续测试该功能约一周。然后,我们将正式宣布它们,并删除实验性站点设置(即,通行密钥支持将默认在所有使用本地登录的实例上启用)。

7 个赞

我在桌面版(Windows 11,Chrome)上进行了测试,运行完美!:+1:

我不得不点击“发送密码重置邮件”来确认我的身份,因为我通常使用 Google 登录,所以我不知道我的密码。:sweat_smile:


我在 Android(10)和 Chrome/App 上进行了测试。运行良好,但是:

  • 点击输入框会触发 passkey 模态框。
    • 忽略它并再次点击输入框可以让我输入
  • 点击按钮没有任何反应(除了选中它并关闭键盘)


(耶,它很卡,不知道为什么)

5 个赞

感谢您的报告@Arkshine,我昨天漏掉了一个小改动,没有包含在提交中,这个改动是关于移动组件的。这真是一个令人尴尬的错误,按钮在所有移动设备上都无法使用。

不过,现在已经修复了,我刚刚在我的安卓手机上进行了测试,您那边应该也能正常使用了。

2 个赞

是的,现在可以了,谢谢!:smile:

2 个赞

看起来 ChromeOS 系统无法用作 Discourse 的通行密钥(尽管它可以作为其他网站的通行密钥),这是故意的吗?

我们并没有特意阻止它,不是的。“chromeos 系统”具体是指什么?是 Chrome 上的 ChromeOS 吗?您能分享一下浏览器和操作系统版本吗?

是的。

当然。
从 chrome://version:

Google Chrome 118.0.5993.86 (Official Build) (64-bit)
Revision d9a55e23605b9c433d369a305c71114843ec754d-refs/branch-heads/5993@{#1287}
Platform 15604.45.0 (Official Build) stable-channel octopus
User Agent Mozilla/5.0 (X11; CrOS x86_64 14541.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36

这些信息足够吗?

使用此计算机添加通行密钥时会发生以下情况(我在第一个菜单中选择了“此设备”选项):


1 个赞

啊,有意思,谢谢截图。我怀疑该设备不支持用户验证?您可以使用触摸/面部 ID 或 PIN 码来解锁设备吗?

根据此页面,Chrome OS 的支持确实有些零散。

1 个赞

我认为它支持。

我使用密码。值得注意的是,我可以使用 webauthn 将此设备添加为帐户的 2FA 方法,但无法将其添加为通行密钥。

1 个赞