freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

基于Django的双因子认证实现
FreeBuf_19579 2021-09-22 11:48:05 840758
所属地 北京

双因子简介

对于网络信息系统来说,能否识别使用者的身份,是能否确保安全的基础和关键。在实际应用中,许多网络信息系统都会要求使用者在使用系统之前,提供一些相关信息用以实现对使用者的身份认证。双因子身份认证技术弥补了传统密码认证方法的很多弊端。 可用于认证的因子可有三种:第一种因子最常见的就是口令等知识,第二种因子比如说是IC卡、令牌,USB Key等实物,第三种因子是指人的生物特征。所谓双因子认证就是必须使用上述三种认证因子的任意两者的组合才能通过认证的认证方法。

双因子认证(2FA)是指结合密码以及实物(信用卡、SMS手机、令牌或指纹等生物标志)两种条件对用户进行认证的方法。

OTP全称叫One-time Password,也称动态口令,是根据专门的算法每隔60秒生成一个与时间相关的、不可预测的随机数字组合,每个口令只能使用一次。这里使用OTP作为django的双因子认证。

双因子的django实现

① 引入django的双因子模块。参考模块的地址:https://pypi.python.org/pypi/django-otp/其中 https://django-otp-official.readthedocs.io/介绍了详细的模块使用方法。

实际使用中可以使用 pip install django_otp安装(要求django版本>=1.8)

② 修改settings.py 文件 。引入django_otp的模块,其中注意 MIDDLEWARE 中django_otp.middleware.OTPMiddleware 中间件的位置。然后执行 python manage.py migrate otp_totp 生成对应的表

基于Django的双因子认证实现

③ 在需要支持otp认证的代码逻辑处引入django_otp的接口。

此处的逻辑(这里使用了django的登陆模块)是在用户登录时,需要将用户名和otp的口令连接在一起使用。

首先将django_otp的模块import进来,然后再从password中提取出otp的口令,在经过django的认证之后,再进行口令的校验(match_token), 如果otp认证成功, 则login成功,否则失败。

基于Django的双因子认证实现

④ 激活用户的otp客户端

首先,要将用户引入到otp认证中。 登陆django的admin管理后台,将用户添加到otp相关的表中。中间省略了ADD TOTP DEVICE。

需要执行 pip install qrcode 支持生成二维码

基于Django的双因子认证实现基于Django的双因子认证实现

然后会在otp表中生成用户客户端的二维码,使用户的otp工具(测试使用的是 FreeOTP)识别这个二维码后,即可激活otp功能。在登陆输入密码时,需要将密码+otp工具的口令一起输入即可

基于Django的双因子认证实现

附一张FreeOTP 图片(手机Freeotp应用禁止截屏),大概就是长这个样子, 右上角 + 添加识别的二维码

基于Django的双因子认证实现

*本文作者:chengfangang,本文属 FreeBuf 原创奖励计划,未经许可禁止转载

# Django # 双因子认证(2FA)
本文为 FreeBuf_19579 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
FreeBuf_19579 LV.4
这家伙太懒了,还未填写个人描述!
  • 7 文章数
  • 10 关注者
信息安全建设之基于开源搭建WAF网关
2022-01-06
信息安全建设之基于开源搭建零信任网关-实践篇
2021-11-05
信息安全建设之基于开源搭建零信任网关-原理篇
2021-10-29
文章目录