标签: google-authenticator

如何在自定义非谷歌登录webapp中使用GoogleAuthenticator进行tfa(双因素身份验证)

好吧,我花了2个小时在谷歌上搜索它是什么以及如何在网络应用程序中使用它!但没有成功.

大多数链接都会讨论扫描代码或在GoogleAuthenticar移动应用中输入一些密钥,它会每30秒返回一次更改验证码.

一些事情 :

  1. Web应用程序有自己的登录名.这意味着用户不会使用Google登录到webapp.
  2. 如果攻击者获得了用户的密码,他会将QRcode视为下一步,他可以直接使用手机中的GoogleAuthenticator应用程序进行扫描(据我所知).它是如何仅与用户的手机相关联的?
  3. 在各个网站中,它提到用户和服务器之间的共享秘密,这意味着在注册时,我们向用户提供共享密钥,他可以在她的移动GoogleAuthenticator应用程序中使用,然后在阅读QR代码时使用它?
  4. 在上述情况下,如果用户丢失或遗忘了秘密,该如何处理?使用忘记密码再次将密码发送给用户的电子邮件?

我很困惑,如果它是一个非谷歌非Android应用程序,它怎么能以一种方式实现!

我得到的只是,这只是一个概念,要求我们自己的实现,并在GoogleAuthenticator的源代码中提供一些帮助.请纠正我?

我认为这是解决的办法是,我们必须写我们自己的移动应用,就像提到的这个家伙在这里,但我仍然不知道如何将移动应用与服务器之间的秘密将是独一无二的,每个安装该应用程序,以便它只识别特定用户或有没有办法编写我们自己的应用程序并使用GoogleAuthenticator移动应用程序而无需在我们的webapp中登录Google?

oauth google-api google-authentication google-api-client google-authenticator

5
推荐指数
1
解决办法
2133
查看次数

我必须使用哪些数据为Google身份验证器生成QR码?

我想在我们的应用程序中使用Google身份验证器应用程序进行登录.

我正在使用speakeasy来生成用于身份验证的基础数据.它还可以向生成QR代码的Google网站吐出一个URL,我可以使用Google身份验证器扫描该代码来设置该方案.

我想自己生成QR码,主要是因为我想使用qrcode-terminal在控制台中显示它.

我需要在QR码中编码哪些数据才能使其正常工作?

qr-code node.js google-authenticator

4
推荐指数
1
解决办法
5823
查看次数

Google身份验证器 - 缺少otpauth协议参数

我正在尝试为我的网站生成Google身份验证器应用的QR码(用于双因素身份验证用户登录.)我按照此指南生成URI(使用Google Chart API.)

所以我编写了这个网址:

https://chart.googleapis.com/chart?chs=200x200&chld=M%7C0&cht=qr&chl=otpauth://totp/Example:alice@gmail.com?secret=TGABZXEP4LKB46AX&issuer=Example

创建了QR码(来自上面的链接.)

但是,当我使用适用于我的iPhone 的Google身份验证器应用程序进行扫描时,我所获得的行不显示发布者(在此屏幕截图中用红色圈出),就像其他服务一样 - 请参阅其他条目中的Google:

在此输入图像描述

那么我错过了什么参数?

authentication oauth google-authenticator google-oauth

4
推荐指数
1
解决办法
3934
查看次数

打算打开Goog​​le身份验证器

有没有办法通过 Intent 打开 Google Authenticator。如果是,是否可以使用已填充的密钥来打开它,以使其对用户实用?

android android-intent google-authenticator

4
推荐指数
1
解决办法
3402
查看次数

如何将Google身份验证器移动到硬件设备?

我正在使用基于Google身份验证器的双因素身份验证,我需要将硬件令牌连接到此系统.问题是我不能使用内置密钥的标准OTP令牌.2FA系统自己生成密钥,并且不可能在其中添加硬件令牌的无关密钥.如何将Google身份验证器密钥移至硬件令牌?

token erlang-otp google-authenticator two-factor-authentication multi-factor

4
推荐指数
1
解决办法
7922
查看次数

如何计算 TOTP 到期的秒数?

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

var notp = require('notp')
notp.totp.gen("ciao", {}) // => 345678
Run Code Online (Sandbox Code Playgroud)

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

我该怎么做?

security one-time-password node.js google-authenticator

4
推荐指数
1
解决办法
3930
查看次数

是否可以根据带有时间戳的旧值来预测未来的 2FA 值?

共享2FA代码安全吗?我说的是TOTPGoogle AuthenticatorAuthy

例如,如果我有代码和生成时间,是否可以预测新代码?如果我有超过 1 对代码+时间怎么办?

我认为可以根据旧信息(代码+时间)预测新代码。

那么如果这是可能的,我该怎么做呢?我正在寻找一些算法。

已知时间段、时间、代码和秘密长度。

例子:

22:20:30 561918
22:21:00 161664
22:21:30 610130
Run Code Online (Sandbox Code Playgroud)

security authentication math google-authenticator

4
推荐指数
1
解决办法
1006
查看次数

Google身份验证器扫描时无效的条形码

这是我生成qr代码的代码

public function getUrl($user, $hostname, $secret) {
      $encoder = "https://chart.googleapis.com/chart?chs=200x200&chld=M%70&cht=qr&chl=";
      $encoderURL = sprintf( "%sotpauth://totp/%s@%s",$encoder, $user, $hostname);
      $finalEncodorURL = $encoderURL . "%26secret=". urlencode($secret);
      return $finalEncodorURL;
}
Run Code Online (Sandbox Code Playgroud)

据说这会生成一个qr代码,而且确实如此.但是当我使用谷歌身份验证器应用程序扫描此代码时,它将生成一个错误

The barcode 'otpauth://totp/user4@noemail.com&secret=UOPKN6QFW3J6PW74' is not a valid authentication barcode.
Run Code Online (Sandbox Code Playgroud)

但是当使用密钥"手动输入"时,它会工作,我可以使用生成的密钥登录.

我发现互联网上的东西说我应该urlencode数据,我做了,但它仍然不会工作.

这是上面函数生成的示例url:

https://chart.googleapis.com/chart?chs=200x200&chld=M%70&cht=qr&chl=otpauth://totp/user4@noemail.com%26secret=UOPKN6QFW3J6PW74
Run Code Online (Sandbox Code Playgroud)

我错过了什么或做错了什么?

php qr-code google-authenticator

3
推荐指数
3
解决办法
8737
查看次数

如何"使用Google验证您的客户端"?

如何使用Google正确验证您的客户端?我正在关注本教程 https://developers.google.com/android/guides/client-auth

我将此文本复制到我的命令提示符 -

keytool -exportcert -list -v\-alias androiddebugkey -keystore%USERPROFILE%.android\debug.keystore

我收到此消息"-alias未被识别为内部或外部命令,可操作程序或批处理文件."

怎么了?

android keytool google-authentication google-authenticator xamarin

3
推荐指数
1
解决办法
2884
查看次数

java.security.NoSuchProviderException:没有这样的提供者:SUN

我已经使用二维码实现了两因素身份验证。我已经使用GoogleAuth库完成了它。在我的本地环境中,效果非常好,但是当我在 WebSphere 8.5.5 上部署应用程序时,它会抛出以下错误:

java.security.NoSuchProviderException: no such provider: SUN
Run Code Online (Sandbox Code Playgroud)

GoogleAuth抛出这个异常:

Could not initialise SecureRandom with the specified provider: SUN. 
Another provider can be chosen setting the com.warrenstrange.googleauth.rng.algorithmProvider system property
Run Code Online (Sandbox Code Playgroud)

关于这个方法:

private String getRandomNumberAlgorithm()
{
    return System.getProperty(RNG_ALGORITHM, DEFAULT_RANDOM_NUMBER_ALGORITHM);
}
Run Code Online (Sandbox Code Playgroud)

我在项目的 GitHub 页面上发现了这个问题,它与我的问题非常相似,编写这个库的人在这里解释了这个方法的作用:

该库当前使用 SecureRandom#getInstance 方法并指定 SHA1PRNG 算法和 SUN 提供程序获取 SecureRandom 实例

我知道我必须SUN使用另一个提供者来覆盖提供者System.setProperty("com.warrenstrange.googleauth.rng.algorithmProvider", "property"),因为系统找不到它,但我不明白为什么会抛出异常。在我的机器上,我使用 Java 7 运行应用程序,Websphere 使用相同的版本。不同之处在于WebSphere 上运行的应用程序是用Java 6 编译的。

我的问题是:

为什么会抛出这个异常?Provider不是SUNJava 的一部分吗?

我应该使用哪些其他提供商以及如何使用?

java websphere google-authenticator

3
推荐指数
1
解决办法
8884
查看次数