如何将谷歌身份验证器添加到我的网站?

48

我有一个网页应用程序,前端是Angular2,后端是NodeJS。 我想允许客户使用Google Authenticator使其帐户更安全。

我该如何在我的网站中实现/使用Google Authenticator? 我找不到可以使用的API、教程或任何库。 我在哪里可以找到一些资源来做到这一点?


只需实现通过 Google 帐户进行用户身份验证的功能即可。这就是你所能做的全部。用户是否需要使用 Authenticator 取决于他们的帐户设置,并且每个用户的情况都可能不同。 - user5734311
@ChrisG哦,所以客户只有在拥有Google/Gmail帐户的情况下才能使用Google Authenticator选项? - georgej
不是的,但是你标记了“google-authentication”,这意味着“使用谷歌账户进行所有身份验证”,所以我认为你的问题是关于在你的Web应用程序中添加Gmail登录。 - user5734311
4
我对Chris G的评论有些保留。仅仅允许使用谷歌账号登录并不是你能做的全部。你可以为应用程序的“内置”帐户开发多因素身份验证(MFA),并且这些帐户可以与Google或Microsoft等认证应用程序配合使用。目前有几个网站正在这样做,我能想到的一个是500px。 - pmdci
1个回答

58
"The key phrase that you're looking for is "TOTP" (基于时间的一次性密码) - 它是一个规范, 而不是由Google维护的API。在非常高的层面上,您的后端将生成一个密钥与用户的Google Authenticator应用程序共享。在登录时,身份验证器应用程序和您的后端将使用存储的密钥和当前时间生成一次性密钥。如果密钥匹配,则意味着密钥匹配,并且用户可以登录。 SpeakEasy节点实现似乎在github上非常受欢迎。"

Speakeasy提供JavaScript实现的示例代码。与Google Authenticator没有通信 - 没有必要,参见Andrew Rueckert上面链接的TOTP规范。 - Nino Filiu
SpeakEasy 似乎是一个被遗弃的项目,他们最后一次更新是在6年前。 - DefToneR
4
"未维护". - jasonleonhard
7
在谷歌搜索“TOTP <语言>”,你可以选择实现方案。otplib NPM库似乎可以满足您的需求。虽然该库已经有一年没有更新了,但是规范并未改变,旧代码仍将生成正确的6位数序列。 - Andrew Rueckert

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接