Django两因素验证

时间:2019-02-27 15:08:36

标签: django django-models django-rest-framework django-forms django-views

我最近一直在阅读有关django-two-factor-authentication的文档,该文档在这里找到:https://django-two-factor-auth.readthedocs.io/en/stable/installation.html该文档很棒。但是,我试图了解此解决方案的全部要求。如果实施此程序包,那么我是否需要依靠第三方来完成此解决方案,或者在没有第三方的情况下是否可以实现两因素身份验证?我主要关心的是与插入第三方相关的成本。如果可以避免,显然我更喜欢免费。如果无法避免,是否有人在提供两因素身份验证的任何第三方提供商中都有经验?我对Twillio进行了一些研究,但我知道还有其他人也在执行这项服务。预先感谢您的任何投入。

2 个答案:

答案 0 :(得分:1)

双重因素不仅可以通过SMS消息起作用。也可以通过以下方式实现:

  • 预先生成的一次性密码/ PIN码
  • OTP / TOTP算法
  • 电子邮件
  • 自定义通信渠道(例如您自己的移动应用程序,它将与您的服务器联系并获取登录代码)
  • U2F协议(Yubikey等)

此软件包支持所有这些方法,甚至更多。您可以选择其中任何一个,因此无需依赖付费的第三方SMS提供商。

答案 1 :(得分:1)

Steve,您可以在django中实现两要素身份验证,而无需使用付费的第三方。

您可以通过直接实现pyOTP library,然后让用户使用Google Authenticator应用来实现。由于全部是数学运算,因此在生成或验证代码时无需第三方服务。

我以前在django网站上实现了此功能。它涉及设置OTP机密并进行验证。然后,每次需要身份验证时,都将生成QR码以供他们使用配置URI进行扫描,然后将2FA验证与您的身份验证结合在一起。所有这些步骤都可以单独使用pyOTP库完成。 (我还使用了pyqrcode库来生成可扫描的QR代码)

如果您进行搜索,您可能会发现一些人的例子,这些人已经在较大的图书馆like this one中建立了这些较小的步骤。

如果您想提供基于SMS的2FA,则需要考虑使用Twilio。但这也许是一项功能,而不是必需的。