Google Authenticator集成java

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

背景

最近公司要求所有内网未集成单点的系统做双因子验证,为了节约成本,最终选择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(
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值