在帐户安全体系中,很常见的有手机验证,邮箱验证,谷歌二次验证。今天重点画下谷歌二次验证也就是Google Authenticator的开发使用。Google Authenticator不仅安全可靠,还可以离线使用,即使终端没有网络的情况下也可以进行验证。银行的U盾也是使用同样的方式。在这里不进行二次验证的原理说明,有兴趣的同学可以到 Google账户两步验证的工作原理 进行了解哈。
验证器的终端使用之一如图,每三十秒会变换一次六位随机数。
接下来我们进行java后端如何接入二次验证。只需要一个GoogleAuthenticator类就搞定。是基于时间的验证算法。注意需要导入依赖commons-codec 1.10,maven的导入如下:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
GoogleAuthenticator类代码,可直接复制到项目中使用