Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证
Posted
技术标签:
【中文标题】Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证【英文标题】:Django Rest Framework and django rest framework simplejwt two factor authentication 【发布时间】:2021-09-09 15:10:10 【问题描述】:我将 django 3.2.4 版与 Django Rest Framework 结合使用。 我还将https://github.com/jazzband/djangorestframework-simplejwt 用于 JWT。
问题: 我需要通过以下方式启用两因素身份验证。
-
用户使用他提交用户名和密码的端点。他收到了一个 jwt 令牌,该令牌在声明中包含了他需要输入哈希的验证码。
同时,包含此代码的电子邮件会发送到他的电子邮件。
用户收到电子邮件后,他在另一个 enpoint 中发布了收到的验证码和他在上一步中收到的 jwt 令牌。
如果用户提交的代码与哈希代码匹配,则他会获得 jwt 令牌,该令牌将在后续请求中使用。
附:欢迎任何其他实现与上述类似的想法。
【问题讨论】:
【参考方案1】:我解决这个问题的方法是向用户模型添加一个确认代码字段,并使用一个视图处理登录,有两种情况:
第一种情况,我在请求中有用户名和密码,但没有代码,在检查用户名和密码后,我将手动创建并返回一个短暂的访问令牌,仅没有刷新令牌(例如,它将在 3 分钟内到期),我'd 创建一个确认码,将其保存在数据库中并通过邮件或短信等方式发送...
第二种情况,用户使用请求中的访问令牌发布收到的确认码,但没有用户名和密码,这样我可以确保用户有可用的访问令牌和确认码,然后我会返回访问令牌并像往常一样刷新令牌,在这一步中,我会在确认登录后将访问令牌列入黑名单。
【讨论】:
以上是关于Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Django Rest Framework 和 django Rest Framework simplejwt 两因素身份验证
Django-rest-framework 和 django-rest-framework-jwt APIViews and validation Authorization headers
Django REST framework 的TokenAuth认证及外键Serializer基本实现