使用 TOTP 实现双因子认证

使用 TOTP 实现双因子认证_第1张图片
双因子认证

TOTP: Time-Based One-Time Password Algorithm(基于时间的一次性密码算法),具体可参考 RFC6238

使用诸如 TOTP 生成的动态口令可以实现登录时的二因子认证(密码+动态口令) ,关于双因子认证可以参考 这篇文章

本文简单阐述如何在自己的网站中集成双因子认证,服务端使用 python,客户端使用 Google Authenticator,在各个市场都可下载,无需联网即可使用

服务端

  • 安装 pyotp, pip install pyotp
  • 为每个用户生成一个 base32 的密钥 base32secret3232,保存在服务器数据库中 , 代码为 pyotp.random_base32()
  • 服务端在匹配时使用 totp = pyotp.TOTP('base32secret3232')
    totp.now() 即可获得当前动态口令

客户端

客户端使用 Google Authenticator 扫描二维码即可录入信息,二维码的内容可以在服务器生成 pyotp.totp.TOTP('base32secret3232').provisioning_uri("[email protected]", issuer_name="Secure App")

  • base32secret3232 为之前生成的 base32 的密钥
  • [email protected] 为用户的用户名,可以显示在客户端上
  • Secure App 为 APP/网站 的名字

之后 Google Authenticator 会每隔 30s 就更新一次动态口令,在需要二次认证的时候传入服务器做对比。二维码生成工具有很多,比如 qrious 等


参考资料:

  • 双因素认证(2FA)教程
  • 深入理解双因子认证
  • pyotp 2.2.6
打赏码

你可能感兴趣的:(使用 TOTP 实现双因子认证)