在没有第三方应用程序的情况下实现2factor身份验证

2024-05-26 19:54:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图提出一个基于非第三方的解决方案,在服务器端使用Python2.7,在客户端使用js。在

根据this answer,“带外”身份验证流可以如下所示:

  • 用户输入用户名和密码
  • 作为响应,服务器生成一个6位(或其他)令牌,并使用sms将其发送到用户的手机
  • 用户将代码发回服务器
  • 服务器将与存储的令牌进行比较并将用户登录

但这并不是真正的双因素身份验证;它只是“带外”即使用第二种介质来传输令牌。在

TOTP/HOTP库,如onetimepass总是:

  • 依赖于服务器和客户机(或客户机的智能手机)都已经拥有的共享机密字符串(通过以前的一种或另一种交换)
  • 客户机和服务器使用共享字符串和相同的算法独立地生成令牌(可能还有同步的时钟)
  • 客户机将其令牌版本发送到服务器
  • 服务器将其与生成的结果进行比较

我的假设正确吗?如果是这样,如果我不想使用像googleauthenticator或Authy这样的第三方服务,没有它,我如何实现基于TOTP/HOTP的二元身份验证呢?如果我做不到,我的2-factor(通过Python或js)的非第三方选项是什么?在


Tags: 字符串用户answer服务器身份验证客户端客户机服务器端
1条回答
网友
1楼 · 发布于 2024-05-26 19:54:11

有两种方法可以做到这一点-你可以通过消息提供一个代码,用户必须在获得访问权之前进入你的网站,或者你用一个编码的用户用户名来设置链接长度,当点击该用户时,该用户被授权。在

使用Twilio或亚马逊的SNS平台等smsapi。使用这些服务要花钱,而且没有免费的。在

带外也可能意味着电子邮件,而且也有相应的API——比如mail gun。(自由到一定程度)

相关问题 更多 >

    热门问题