在没有第三方应用的情况下实施双因素身份验证

时间:2015-06-04 20:00:25

标签: javascript python authentication

我正在尝试使用服务器端的Python 2.7和客户端的js来提供基于非第三方的双因素身份验证解决方案。

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

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

但这不是实际的双因素身份验证;它只是“带外”,即使用第二种媒介来传输令牌。

onetimepass这样的TOTP / HOTP库总是:

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

我的假设是否正确?如果是这样,如果我不想使用Google Authenticator或Authy等第三方服务,如何在没有它的情况下实施基于TOTP / HOTP的双因素身份验证?如果我不能,那么我的非第三方选项对于双因素(通过Python或js)是什么?

1 个答案:

答案 0 :(得分:0)

有两种方法可以使用它 - 您可以通过在获得访问权限之前必须在您的网站上输入的消息提供代码,或者您使用编码的user_id设置链接的长度,当点击该链接时授权该用户。 / p>

使用SMS api,例如Twilio或亚马逊的SNS平台。使用这些服务需要花钱,而且没有一个是免费的。

带外也可能暗示电子邮件,并且也存在api - 例如邮件枪。 (哪些是免费的)