python 实现google authenticator 认证
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python 实现google authenticator 认证,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2304字,纯文字阅读大概需要4分钟。
内容图文
![python 实现google authenticator 认证](/upload/InfoBanner/zyjiaocheng/637/c26ffa8fcadc428c8e600a2b8db4f8d0.jpg)
python 实现google authenticator 认证
?一、环境描述
windows开发环境 python:3.6 所需安装包 pyotp qrcode Image
二、实现原理
1.使用pyotp 的python模块生成google auth 需要的密钥 2.根据密钥生成条形码图片 3.使用google authenticator 客户端扫描条形码,客户端根据时间及密钥经过算法 生成6位数的验证码 4.平台二次认证通过对输入的验证码进行校验,校验也是基于时间和密钥
三、代码实现
3.1随机密钥生成
a. 安装模块包
安装模块包 pyotp pip install pyotp
b. 密钥生成
import pyotp gtoken = pyotp.random_base32(64) #获取随机密钥,存于用户表中,随机64位
3.2 图片二维码生成
a. 安装模块包
安装模块包 pip install qrcode qrcode 依赖 Image 这个包: pip install Image
b.根据用户名及密钥生成二维码
import os import traceback from qrcode import QRCode, constants def get_qrcode(secret_key, username): BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) dirpath = os.path.join(BASE_DIR, 'mfa', 'static', 'image') data = pyotp.totp.TOTP(secret_key).provisioning_uri(username, issuer_name="IAM MFA Code") qr = QRCode( version=1, error_correction=constants.ERROR_CORRECT_L, box_size=6, border=4, ) try: qr.add_data(data) qr.make(fit=True) img = qr.make_image() filepath = dirpath + os.sep + secret_key + '.png' print('filepath',filepath) img.save(filepath) # 保存条形码图片 return True,filepath except Exception as e: traceback.print_exc() return False,None
c. 使用功能
result = get_qrcode(gtoken, 'supery') print('result', result) LWGOAZX5PQQLR34BOJRLVHHC4CRVFVXP3PGCYHWZ2PVKLRSJNCDWR6XPL4LAJRST filepath D:\dev\PYSCRIPTS\xxx\mfa\static\image\LWGOAZX5PQQLR34BOJRLVHHC4CRVFVXP3PGCYHWZ2PVKLRSJNCDWR6XPL4LAJRST.png result True
3.3 效验验证码正确性
a. 下载好google authenticator客户端
客户扫描图片,前端页面验证用户名和密码后,显示对应的条形码图片 windows上打开图片后扫描二维码 D:\dev\PYSCRIPTS\xxx\mfa\static\image\LWGOAZX5PQQLR34BOJRLVHHC4CRVFVXP3PGCYHWZ2PVKLRSJNCDWR6XPL4LAJRST.png 实际生产环境通过页面直接显示该二维码图片,进行扫描
b. 效验代码
import pyotp def Google_Verify_Result(secret_key, verifycode): t = pyotp.TOTP(secret_key) result = t.verify(verifycode) # 对输入验证码进行校验,正确返回True msg = result if result is True else False return msg
c. 使用功能
secret_key = 'LWGOAZX5PQQLR34BOJRLVHHC4CRVFVXP3PGCYHWZ2PVKLRSJNCDWR6XPL4LAJRST' res = Google_Verify_Result(secret_key, 247724) print('res', res)
res False
转自 https://www.cnblogs.com/supery007/p/12580840.html
?内容总结
以上是互联网集市为您收集整理的python 实现google authenticator 认证全部内容,希望文章能够帮你解决python 实现google authenticator 认证所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。