【问题标题】:How to add Google Authenticator to my website?如何将 Google Authenticator 添加到我的网站?
【发布时间】:2017-12-01 00:00:31
【问题描述】:

我有一个 Web 应用程序,前端是 Angular2,后端是 NodeJS。我想允许客户使用 Google Authenticator 来提高他们的帐户安全性。

如何在我的网站中实施/使用 Google 身份验证器?我找不到要使用的 API 或要遵循的教程或要使用的任何库。我在哪里可以找到一些资源来做到这一点?

【问题讨论】:

  • 只需实现通过 google 帐户作为用户进行身份验证的功能。这就是你所能做的。用户是否必须使用 Authenticator 取决于他们的帐户设置,并且会因每个用户而异。
  • @ChrisG 哦,所以客户只有拥有 google/gmail 帐户才能使用 Google Authenticator 选项?
  • 不,但你用google-authentication 标记了这个,这是“所有使用谷歌帐户的身份验证”,所以我认为你的问题是关于向你的网络应用程序添加一个 gmail 登录。
  • 我对 Chris G 的评论有所保留。启用 Google 帐户登录并非您能做的全部。您当然可以为您的应用程序的“内置”帐户开发 MFA,该帐户可与 Google 或 Microsoft 等身份验证应用程序一起使用。有几个网站正在这样做,我目前能想到的一个是 500px。

标签: javascript node.js google-authentication two-factor-authentication


【解决方案1】:

您要查找的关键字是“TOTP”(基于时间的一次性密码)- 它是 specification,而不是由 Google 维护的 API。

在非常高的级别上,您的后端将生成一个秘密,它将与您用户的 Google Authenticator 应用共享。登录时,Authenticator 应用程序和您的后端都使用存储的密钥和当前时间来生成一次性密钥。如果密钥匹配,则意味着秘密匹配,并且用户可能已登录。

SpeakEasy 节点实现似乎在 github 上很受欢迎。

【讨论】:

  • Speakeasy 为 JavaScript 实现提供了 sample codes。没有与 Google Authenticator 通信 - 没有必要,参见上面 Andrew Rueckert 链接的 TOTP 规范。
  • SpeakEasy 似乎是 6 年前最后一次更新的废弃项目。
  • “未维护”
  • 只需谷歌TOTP <Language>,您就可以选择实现。 otplib NPM 库看起来可以做你想做的事。大约一年没有更新,但规范没有改变,旧代码仍然会产生正确的 6 位序列。
猜你喜欢
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-20
  • 2012-06-28
  • 2010-09-21
  • 2020-10-15
  • 2012-08-27
相关资源
最近更新 更多