有关TOTP过期问题

来源:6-1 多因子认证和TOTP

LayLowMay

2021-04-02

老师您好, 我想与您讨论一下验证码生成组件的问题
[业务场景]
我们假设这么一个业务场景, 我们totp的duration设置的是5分钟.
一个totp时间已经到了4分55秒了.
这个时候用户点击了, 获取验证码, totp被发送出去了.
5分钟到了, totp刷新了, 这是用户都还没来得及把totp输入验证并且登陆.
再输入, 用户发现验证码过期了, 这样就很莫名其妙.

这里是我能想到的两种解决方案, 老师您能不能斧正一下我不成熟的想法.
[解决方案]

  1. 仍旧使用totp生成验证码
    但由于totGenerator继承hotGenerator, 所以也是使用counter去生成不同密码.
    利用counter反推下一次密码变化的时间戳, 再计算出距离下一次密码变化有多长时间, 然后跟验证码一起发送给用户.
    但接近过期的时候还是会没输入验证成功就失效.
  2. 直接使用hotGenerator, counter则在用户表新增一个字段verify_code_counter, 从1开始自增.
    每次请求verify验证码的接口都自增一次, 等于刷新了验证码
写回答

2回答

接灰的电子产品

2021-04-02

是的,一般可以对边界附近的时间进行特殊处理,生成totp进行处理即可

1
0

LayLowMay

提问者

2021-04-02

百度说这是边界问题, 如果出现了可以减一往前推五分钟, 如果能校验证明有效

0
0

Spring Security+OAuth2 精讲,打造企业级认证与授权

一站式掌握主流安全框架与行业解决方案,从容应对各种安全难题。

1061 学习 · 316 问题

查看课程