最近公司新进项目需求:谷歌身份验证器来做一个二次因素校验,查了很多网上的例子,也自己写了demo,其中遇到了些问题,记录一下:
1.谷歌身份验证器原理简单说明
2.谷歌身份验证器的使用流程
3.谷歌身份验证器使用需要引入的jar包
4.谷歌身份验证器server端代码
5.谷歌身份验证器test端代码
6.谷歌身份验证器server端校验code要求传long型数据,如果验证码为0023456这种情况的解决
1.谷歌身份验证器原理简单说明
引用谷歌身份验证器,可以直接百度就可以下载了,应用商店中不一定会有这个软件,至少我用的华为就没搜索到,直接手机浏览器搜索下载即可。
谷歌身份验证器不需要引入谷歌的API来实现,主要是通过加密算法来实现的身份统一。
手机端需要拿到用户的secret密钥,从而计算得出6位的动态验证码。这个获取密钥的途径可以通过两种场景实现:
1)服务端产生加密密钥并生成二维码展示给用户,用户直接扫码即可识别密钥并产生动态验证码的服务
2)直接展示给用户密钥串,用户在手机端主动输入
通过这两种方式都可以将用户的secret记到当前设备上。
具体原理就是:客户端和服务端使用相同的密钥,相同的算法,最终在验证时,因为可能会存在时差的问题,服务端实际上是校验了大约四组数据与当前输入的6位动态验证码,有一组相同即认为是通过了验证。
2.谷歌身份验证器的使用流程
这是我理解的流程;
3.谷歌身份验证器使用需要引入的jar包
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.12</version>
</dependency>
主要是这个jar包,jdk用的是1.8版本的&#