标签: google-authenticator

Android Google Auth登录handleSignInResult:false

我正在开发我尝试使用Google登录的应用程序.但getExtrasdata始终返回null.

这是我从日志中得到的:

getSignInIntent = { act=com.google.android.gms.auth.GOOGLE_SIGN_IN cmp=com.rbsoftware.pfm.personalfinancemanager/com.google.android.gms.auth.api.signin.internal.SignInHubActivity (has extras) }

mGoogleApiClient=com.google.android.gms.internal.zzmg@1f595441

handleSignInResult:false

result=com.google.android.gms.auth.api.signin.GoogleSignInResult@7d8c188

data=Intent { (has extras) }

getExtrasdata=Bundle[{googleSignInStatus=Status{statusCode=INTERNAL_ERROR, resolution=null}}]
Run Code Online (Sandbox Code Playgroud)

在Developer Console中一切都应该没问题.

你能帮我修一下这个问题吗?

package com.rbsoftware.pfm.personalfinancemanager;


import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

import com.google.android.gms.auth.api.Auth;
import com.google.android.gms.auth.api.signin.GoogleSignInAccount;
import com.google.android.gms.auth.api.signin.GoogleSignInOptions;
import com.google.android.gms.auth.api.signin.GoogleSignInResult;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.SignInButton;
import com.google.android.gms.common.api.GoogleApiClient;
import com.google.android.gms.common.api.OptionalPendingResult;
import com.google.android.gms.common.api.ResultCallback;


public class LoginActivity extends AppCompatActivity implements
        GoogleApiClient.OnConnectionFailedListener,
        View.OnClickListener {
    private static final String TAG = "SignInActivity";
    private static final int RC_SIGN_IN = 9001; …
Run Code Online (Sandbox Code Playgroud)

android google-api google-authenticator google-plus google-signin

8
推荐指数
1
解决办法
6908
查看次数

如何使用 php 创建谷歌两因素身份验证?

我想在我的 PHP 项目中使用 Google 2FA。用户需要在登录时输入 6 位 2fa 代码。

你能画出一些关于采取哪个方向的提示吗?

php google-authenticator two-factor-authentication

7
推荐指数
2
解决办法
2万
查看次数

使用 Google Authenticator 进行双因素身份验证 - 手动输入密钥而不是扫描二维码

在 Google Authenticator 应用中,您可以扫描二维码或手动输入颁发者提供的密钥。

在下面的屏幕截图中,您可以看到Google安全设置中2FA的设置,显示了如何按照第二种方法获取TOTP。

Google 2FA 设置 - Google 身份验证器设置

我的问题是:这个密钥是如何生成的?

我正在尝试为我的网站使用 Google Authenticator 支持 2FA,我发现了许多有关如何生成 QR 码的参考资料和文档,但没有提到替代方法。

编辑:

更清楚地说,我在 Grails 3 Web 应用程序中使用 Google Authenticator 支持 2FA。我已经通过为每个用户生成一个密钥(Base32字符串)、提供一个二维码供用户扫描以及在登录时验证 TOTP 来实现整个用户流程。我用作依赖项:

  • org.jboss.aerogear:aerogear-otp-java, aerogear OTP可根据 GA 的 TOTP 方便地验证用户密钥
  • org.grails.plugins:qrcode, qrcode Grails 插件生成二维码

我的问题是关于在 Google Authenticator 应用程序中添加新条目的 2 种方法: 1. 扫描二维码(我这边一切正常) 2. 手动输入帐户名称和字母代码(在我的第一个屏幕截图中,代码是在 Google 安全设置中提供)

您可以看到 Android 版 GA 的说明性屏幕截图:

Google 2FA 设置 - Google 身份验证器设置

我如何生成并向fzee用户提供这样的代码(从第一个屏幕截图开始,并在第二个屏幕截图中命名为“提供的密钥”)?我确信它是在 QR 码中编码的相同数据字符串的编码,但我不知道是哪个(不仅仅是Base32)。

qr-code one-time-password google-authenticator two-factor-authentication totp

7
推荐指数
1
解决办法
2万
查看次数

PyOTP 生成的代码与 Google Authenticator 生成的代码不匹配

我想在Python中实现Google Authenticator生成的2FA代码

Google Play 上的应用程序 Google Authenticator 可为所需服务生成两步验证。

我已经在我的 Google 帐户上设置了 2FA,他们以“bsnz bwpn tji6 flto 5enn 6vd4 wji7 aaaa”的形式向我提供了密码,并注明“空格无关紧要”

所以,我在Python中尝试了以下代码,但它不起作用。

在 Google 身份验证器中,我已经选择了“基于时间”

我的计算机上运行下面的脚本的时间与我手机上安装 Google Authenticator 应用程序的时间相同。

import pyotp, base64
totp = pyotp.TOTP( base64.b32encode("bsnz bwpn tji6 flto 5enn 6vd4 wji7 aaaa") )
print "Current OTP:" + totp.now()
Run Code Online (Sandbox Code Playgroud)

Google Authenticator App 生成的代码与我的代码不匹配。

我究竟做错了什么 ?

python google-authenticator

7
推荐指数
1
解决办法
3370
查看次数

Perl Authen :: OATH和Google身份验证器 - 不兼容?

我的理解(可能显然是错误的)是Authen :: OATH模块与Google Authenticator App生成的totp代码兼容.但它对我不起作用,而类似的红宝石代码则有用.我们在这里是一个perl商店,如果有人能指出我正确的方向来帮助我免于逐行挖掘两个库,那将会有所帮助.

这款红宝石兼容:

require 'rubygems'

require 'rotp'

secret = "bqagf6ohx4rp3a67"

puts ROTP::TOTP.new(secret).now.to_s
Run Code Online (Sandbox Code Playgroud)

这个perl没有:

use Authen::OATH;

my $oath = Authen::OATH->new();

my $totp = $oath->totp(" bqagf6ohx4rp3a67" );

print "$totp\n";
Run Code Online (Sandbox Code Playgroud)

perl google-authenticator

6
推荐指数
1
解决办法
1794
查看次数

在自己的asp.net项目中使用Google身份验证器的双因素身份验证?

您好我已经创建了自己的asp.net项目(非MVC).现在我想使用Google身份验证器实现双因素身份验证.因此,当用户获得注册用户将获得密钥或获取QR图像和设置与它的Android手机.对于登录,他们需要来自谷歌身份验证器应用程序的密钥.

我在asp.net中获得了很少的MVC代码.我需要步骤如何集成在asp.net应用程序(非MVC)请指导我如何实现这个任何样本将不胜感激.

谢谢

asp.net google-authenticator two-factor-authentication

6
推荐指数
2
解决办法
6328
查看次数

Angular with Rails和Google Authenticator

我正在建立一个使用Ruby on Rails + AngularJS + 设计令牌身份验证Gem的网站,我想实现Google身份验证器.

我找到了这个gem devise_google_authenticator

问题是我无法实现Gem,因为我正在使用AngularJS.

ruby-on-rails devise google-authenticator angularjs

6
推荐指数
0
解决办法
375
查看次数

Laravel 5:如何将额外属性存储到用户登录会话

我实际上是在项目中实现双因素身份验证.我做的是

Auth::user()->google2fa_passed = 1;
Run Code Online (Sandbox Code Playgroud)

事实上它并没有真正存储,当导航到另一个页面时,缺少值.

我也不想保留在另一个会话中,因为当用户注销(或用户从浏览器中删除会话cookie)时,将显示登录页面,并再次通过2因子身份验证.

知道如何为用户会话保存1个以上的属性吗?

php session google-authenticator laravel-5

6
推荐指数
1
解决办法
5415
查看次数

谷歌 OTP 生成 Java

我目前正在尝试重新创建 Google 一次性密码生成器。我使用设置 Google Authenticator 时生成的共享密钥。我尝试查看 Google Authenticator 来源和互联网上的所有内容,发现与我的代码有很多相似之处,但我真的找不到我错在哪里。第一部分似乎是正确的。至于 hmac,我认为我不会在这里搞砸,但我可能是错的。截断部分对我来说仍然有点模糊,我尝试了很多不同的实现,但我就是无法获得有效的 OTP。(我正在使用 Google Authenticator 来比较结果)

private String truncateHash(byte[] hash) {
    int offset = hash[hash.length - 1] & 0xF;

    long truncatedHash = 0;
    for (int i = 0; i < 4; ++i) {
        truncatedHash <<= 8;
        truncatedHash |= (hash[offset + i] & 0xFF);
    }

    truncatedHash &= 0x7FFFFFFF;
    truncatedHash %= 1000000;

    int code = (int) truncatedHash;
    String result = Integer.toString(code);
    for (int i = result.length(); i < 6; i++) {
        result = "0" …
Run Code Online (Sandbox Code Playgroud)

java one-time-password hmacsha1 google-authenticator

6
推荐指数
1
解决办法
3254
查看次数

为用户添加2fa验证器

我一直在尝试弄清楚如何在我的 Identity server 4 应用程序中使用 Google 身份验证启用 2f 登录。

2fa 适用于电子邮件和电话。

如果我检查

var userFactors = await _userManager.GetValidTwoFactorProvidersAsync(user);
Run Code Online (Sandbox Code Playgroud)

它有两个email and phone。我假设这将是为此用户设置的两个因素提供程序。

现在,如果我_usermanager再次检查,有一个名为 的字段tokenproviders。其中似乎包含default, email, phone, and authenticator. 我假设这些是 Asp .net 身份配置来处理的。

在此输入图像描述

我已经弄清楚如何创建为验证器应用程序生成二维码所需的秘密。以及如何构建 QR 码和测试代码

 var code = _userManager.GenerateNewAuthenticatorKey();      

 var qr = AuthencatorHelper.GetQrCodeGoogleUrl("bob", code, "My Company");

 var user = await _signInManager.TwoFactorAuthenticatorSignInAsync(codeFromAppToTestWith, true, false);
        if (user == null)
        {
            return View("Error");
        }
Run Code Online (Sandbox Code Playgroud)

现在问题来了。我已经尝试了在用户身上找到的所有方法,试图找出如何向用户添加另一个令牌提供程序。

如何为用户分配新的令牌提供程序并提供创建身份验证代码所需的密码?我什至没有在数据库设置中看到任何表来处理这些信息。电子邮件和电话号码在那里,还有 2faenabled 列。但没有关于验证器的信息。

我目前正在考虑创建一个自定义用户管理器并向应用程序用户添加一个字段。我真的希望有人有更好的主意。

c# google-authenticator asp.net-identity asp.net-core identityserver4

6
推荐指数
1
解决办法
3563
查看次数