我又来了,,,今天我们来讲一讲两步验证的功能♥♥
简介:
两步验证,是指用户登录账户的时候,除了要输入用户名和密码,还要求用户输入一个动态密码,为帐户添加了一层额外保护。这个动态密码要么是专门的硬件,要么由用户手机APP提供。即使入侵者窃取了用户密码,也会因不能使用用户手机而无法登录帐户。许多游戏客户端和网银采用这种方式。以银行为例,当用户进行转账操作时,第一步输入6位取款密码,第二步输入动态密码器上数字,这个密码器是开户时银行提供的硬件。
动态密码原理:
客户端和服务器事先协商好一个密钥K,用于一次性密码的生成过程,此密钥不被任何第三方所知道。此外,客户端和服务器各有一个计数器C,并且事先将计数值同步。进行验证时,客户端对密钥和计数器的组合(K,C)使用HMAC(Hash-based Message Authentication Code)算法计算一次性密码,公式如下:HOTP(K,C) = Truncate(HMAC-SHA-1(K,C))上面采用了HMAC-SHA-1,当然也可以使用HMAC-MD5等。HMAC算法得出的值位数比较多,不方便用户输入,因此需要截断(Truncate)成为一组不太长十进制数(例如6位)。计算完成之后客户端计数器C计数值加1。用户将这一组十进制数输入并且提交之后,服务器端同样的计算,并且与用户提交的数值比较,如果相同,则验证通过,服务器端将计数值C增加1。如果不相同,则验证失败。
原理:
第一步:输入常规帐号密码,验证成功后进入二次验证页面。
第二步:二次验证页面要求用户输入动态密码,用户手机必须先通过APP绑定帐号后才能获取动态密码,APP推荐http://www.pc6.com/az/675682.html
第三步:页面生成二维码
OK,介绍就到这里了,开始我们的操作了。。。。
第一步:还是先来我们的Pom文件吧:
<dependencies> |
有没有感觉很简单呢,是的,没多的依赖。。。。
第二步:也是application.yml文件:这些都不多说了吧,,哈哈哈,还是copy一下吧。
server: |
很简短的配置文件
第三步:开始我们的操作,翠花上菜。。。
ActionController:
package com.demo.twostep.controller; |
copy可能会有错误提示,不用管它,下面就开始盘他。。
GoogleAuthenticatorService
package com.demo.twostep.service; |
UserDao(模拟数据库操作)
package com.demo.twostep.dao; |
UserDaoImpl
package com.demo.twostep.dao; |
OK,后台代码就完成了哦,接下来就是我们来测试的时候了,
老板,筷子呢,我要尝菜了。。。
首先创建三个页面:
login.html
|
index.html:
|
error.html:
|
开始启动我们的项目跑起来,哈哈哈哈(这是我们的启动类)
package com.demo.twostep; |
登陆页面:
得到的二维码:
我们使用App扫描,我们会得到一个验证码(可以设置验证码的过期时间)
得到这个就说明成功了。。
输入对应的验证码,登陆就可以访问这个页面了。。
OKOK,本教程全部完成了,感谢的你的浏览。。。。
有什么问题可以在评论区评论,或者留言
2020-03-16 21:37:30 星期一♥♥