使用 TOTP 实现双因子认证

双因子认证

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("alice@google.com", issuer_name="Secure App")

  • base32secret3232 为之前生成的 base32 的密钥
  • alice@google.com 为用户的用户名,可以显示在客户端上
  • Secure App 为 APP/网站 的名字

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


参考资料:

打赏码
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。