基于PyOTP的二次认证方案

Python研究已有一段时间,目前正在着手开发辣椒小鱼的综合管理系统。

不打算设置用户注册功能,因为系统仅供个人使用,不对外开放注册。用户登录包括用户名、密码以及验证码。验证方式有考虑短信、邮箱、TOTP等多种验证方式。但综合考虑,最终选择了TOTP,因为它不仅能与Bitwarden集成,而且免费且简单易用。

OTP的基本原理

  • 生成一个共享秘钥作为随机数的种子
  • 服务端通过种子计算出当前的密码
  • 客户端也通过相同的种子计算出当前的密码
  • 验证客户端生成的密码和服务端生成的密码是否匹配

服务端和客户端计算的方式一样:共享密钥 + 时间因子 + 算法 => 密码结果

PyOTP与第三方MFA客户端(例如谷歌验证器的iPhone和Android应用、FreeOTP+等,也可以以Email 和短信来集成结合)相结合,构建了二次OTP认证(Authy)方案。PyOTP提供了生成兼容(兼容MFA客户端)的URIs功能,包括签名的URIs,供第三方MFA客户端生成二次认证密码。通过这一功能应用可以集成PyOTP,形成完整的二次认证方案。生成的URLs可转换成二维码,方便MFA(Multi-Factor Authentication)客户端导入和使用。

pip install pyotp -i https://mirrors.aliyun.com/pypi/simple

核心代码如下:

utils/one_time_password.py

此处内容需要 回复 后才能查看

apps/users/forms.py

此处内容需要 回复 后才能查看

为什么要设置回复可见~~因为~~~独行侠好难~不想让你们白嫖~~~

THE END
分享
二维码
打赏
海报
基于PyOTP的二次认证方案
Python研究已有一段时间,目前正在着手开发辣椒小鱼的综合管理系统。 不打算设置用户注册功能,因为系统仅供个人使用,不对外开放注册。用户登录包括用户名、……
<<上一篇
下一篇>>