在iPad App中实现双因素身份验证

时间:2014-01-17 10:35:05

标签: ios iphone objective-c ipad

我计划在iPad应用程序中引入双因素身份验证。目前用户使用用户名和密码登录我的应用程序。该用户名和密码是从使用.Net开发的后端Web服务器验证的。如果用户授权登录,则可以访问iPad应用程序。

现在我想引入双因素身份验证来验证用户。我想知道我们在这里有什么选择。由于我们没有用户的电话,因此每次他尝试登录iPad应用程序时都会考虑向手机发送密码。但iPad不支持通过GSM / CDMA网络发送消息。有没有办法实现这个目标? (考虑从本地ISP获取SMS网关并将SMS写入服务器。但它的成本更高)第三方模块就可以了。

5 个答案:

答案 0 :(得分:0)

您可以使用代码向用户的手机发送短信。

之后,用户输入代码,APP验证向服务器发出请求的代码。

在用户成功引入用户名/密码后发送短信。

其他选项(不太广泛)是通过电子邮件发送该代码。

答案 1 :(得分:0)

您应该尝试google Authenticator

还有其他类似 https://www.gauthify.com的人提供此服务。

您可能有兴趣查看此StackOverflow Post.

答案 2 :(得分:0)

我无法完全表达我对Twitter最近的TFA实施给我留下了多少印象,它非常方便(假设他们没有破坏协议)比许多其他形式的TFA更安全。

Here's a description written by Wired

但总结一下,您为TFA激活了一个设备,它会生成一个私有(设备)/公共(服务器)密钥对。当您在收到正确的用户名/密码凭据后尝试登录时,服务器会在使用公钥加密的任何授权设备上向应用程序发送推送通知,并且应用程序会对该随机数进行解密,并将该随机数发送回服务器并获得会话。

当然,正如其他人所提到的,您可以使用预先构建的服务,例如Google身份验证器,但它们往往比较笨拙,并且担心SMS和TOTP安全性。

答案 3 :(得分:0)

双因素身份验证意味着确认用户知道的东西(他们的密码)以及他们拥有的东西(如物理钥匙,徽章或RSA钥匙扣; 重要的部分是它是除了物理对象之外的物理对象你给他们什么访问)。向他们用于登录应用程序的iPad发送任何类型的推送都会失败,并且不会超过单一因素(仅限密码)。您唯一的选择是:

  • 分发RSA密钥卡(或类似名称)。可能不是一个选择因为成本和&管理费用相关。
  • 创建一个仅 的身份验证器应用程序,该应用程序在与iPad上的应用程序不同的iPad上运行(与Google身份验证器应用程序相同)。您可以通过为受保护的应用程序注册URI方案并尝试在每次打开身份验证器时从身份验证器打开它来阻止身份验证器应用程序在iPad上运行。如果受保护的应用程序打开,则意味着用户尝试在同一设备上运行这两个应用程序,并且验证者不应验证它们。
  • 使用身份验证码向他们的注册手机发送短信。通过在这里使用SMS,您迫使用户让两个设备都能够登录,这是TFA的关键。请注意,有创意的用户可以在iPad上注册Google语音号码(或类似的带有短信应用的VOIP),从而规避了TFA的物理方面。

答案 4 :(得分:0)

检查google身份验证器。 https://code.google.com/p/google-authenticator/

我认为这对于两步验证来说非常安静。

这是服务器端的源代码(它在php上,但我认为将它转换为.NET或其他平台并不是一个大问题)https://github.com/chregu/GoogleAuthenticator.php

据我所知,它使用基于时间的一次性密码算法http://en.wikipedia.org/wiki/Time-based_One-time_Password_Algorithm