如何使用GoogleAuthenticator

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用GoogleAuthenticator相关的知识,希望对你有一定的参考价值。

  使用方法如下:

  1、百度搜索下载或通过三方软件等下载到手机上,完成安装。

  2、运行手机安装后"身份验证器"图标。

  3、第一次运行需要设置帐户跟密钥(密钥可通过网站或软件获取),保存返回。

  4、此时主界面已经显示你的动态密码,动态密码一分钟变更一次。

参考技术A  谷歌验证(Google Authenticator)通过两个验证步骤,在登录时为用户的谷歌帐号提供一层额外的安全保护。使用谷歌验证可以直接在用户的设备上生成动态密码,无需网络连接。特点:自动生成QR码;支持多帐户;支持通过time-based和counter-based生成。
  当用户在Google帐号中启用“两步验证”功能后,就可以使用Google Authenticator来防止陌生人通过盗取的密码访问用户的帐户。通过两步验证流程登录时,用户需要同时使用密码和通过手机产生的动态密码来验证用户的身份。也就是说,即使可能的入侵者窃取或猜出了用户的密码,也会因不能使用用户的手机而无法登录帐户。本回答被提问者和网友采纳

如何计算 TOTP 到期的秒数?

【中文标题】如何计算 TOTP 到期的秒数?【英文标题】:How to calculate the number of seconds when a TOTP will expire in? 【发布时间】:2018-04-20 00:46:16 【问题描述】:

我正在使用notp 在我的节点应用程序中生成一个简单的令牌:

var notp = require('notp')
notp.totp.gen("ciao", ) // => 345678

我想构建一个类似于 Google Authenticator 提供的可视化,并且我需要知道生成的 otp 将过期的秒数(或日期时间)。

我该怎么做?

【问题讨论】:

【参考方案1】:

我找到了怎么做,其实很简单,你只需要知道算法使用的开始时间。

事实证明,Google Authenticator 使用 Unix Epoch,所以在我的例子中,显示我可以做的计时器:

setInterval(() => (console.log(30 - Math.round(new Date() / 1000) % 30)), 1000)

【讨论】:

【参考方案2】:

这个应该很简单,

Google Authenticator 应用程序和服务器上的代码将从每分钟开始每 30 秒刷新一次新代码。

在这里证明:https://github.com/google/google-authenticator/blob/bd50d15c348a978c314d2b30e586fbc562096223/mobile/blackberry/src/com/google/authenticator/blackberry/AuthenticatorScreen.java#L53

因此,只要您的服务器和应用程序同步,这 30 秒的时间间隔将始终与它们总是从一分钟开始和 1 分 30 秒开始。

另一个需要考虑的因素是,服务器端的 Google Authenticator 可以设置为允许代码仅在 30 秒或 4 分钟内有效。因此,您需要检查您的服务器是否设置为 30 秒或 4 分钟,然后进行相应的编码。

设置时的示例:

默认情况下,令牌的有效期为 30 秒,并且为了补偿 对于客户端和服务器之间可能的时间偏差,我们允许 当前时间之前和之后的额外令牌。如果你经历 时间同步不好的问题,可以加大窗口 从其默认大小 1:30 分钟到大约 4 分钟。你想这样做吗 (是/否)

【讨论】:

不,我发现它是从纪元开始的,(这里你可以看到en.wikipedia.org/wiki/Google_Authenticator)。所以我找到了简单的方法......我稍后会发布答案!无论如何,谢谢! 您的回答与我的建议有何不同?很高兴你想通了

以上是关于如何使用GoogleAuthenticator的主要内容,如果未能解决你的问题,请参考以下文章

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?

WSARecv 如何使用 lpOverlapped?如何手动发出事件信号?