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基本实现

Django rest framework 身份和权限验证

Django:rest framework之分页(Pagination)

django-rest-framework-datatables 和 Django Parler 的翻译字段