背景
最近公司要求所有内网未集成单点的系统做双因子验证,为了节约成本,最终选择Google Authenticator
原理
使用密钥和时间戳通过一种算法生成一个6位数字的一次性验证码
集成流程
1、手机下载 Google Authenticator
IOS:在App Store 搜索 Google Authenticator
Android:
打开连接 https://en.softonic.com/download
右上角搜索 Google Authenticator
选择平台 Platform:Android
点击下方 Google Authenticator
点击 FREE DOWNLOAD
再点击 FREE APK DOWNLOAD 等待下载完成
2、生成Secret
调用代码中的 genSecret() 方法生成,记得保存起来,用户需要使用
3、用户扫描二维化进行绑定(也可以拿到密钥手动绑定)
1、当前用户生成的密钥可以生成二维码,用户用app右下角扫描二维码即可添加
参考代码中的main方法
2、手动添加
这里需要知道密钥,添加上名称和密钥即可
4、输入用户名、密码、动态码
5、登录成功
集成流程图

代码
import org.apache.commons.codec.binary.Base32;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
//需要大于1.8 版本 commons-codec-1.8.jar
public class GoogleAuthenticator {
public static final int SECRET_SIZE = 10;
public static final String SEED = "g8GjEvTbW5oVSV7avLBdwIHqGlUYNzKFI7izOF8GwLDVKs2m0QN7vxRs2im5MDaNCWGmcD2rvcZx";
public static final String RANDOM_NUMBER_ALGORITHM = "SHA1PRNG";
int window_size = 3;
public void setWindowSize(

本文介绍了一种基于Google Authenticator实现双因素认证的方法。主要内容包括原理概述、集成步骤及代码实现,适用于希望增强系统安全性的开发者。
最低0.47元/天 解锁文章
3489

被折叠的 条评论
为什么被折叠?



